Lokal guide til Subversion

Dette dokumentet beskriver UiOs Subversion-tjeneste. Det er ogs? en introduksjon til bruk av Subversion, samt litt generell informasjon om Subversion-kommandoer.

1???Hva er subversion?

Subversion er et versjonskontrollsystem. Det holder rede p? hvilke endringer som er gjort i filer (fortrinsvis tekstfiler), hvem som har gjort dem og hvorfor endringen ble gjort. Det har st?tte for klient/tjener-basert tilgang til sentralt arkiv, p? en slik m?te at flere personer kan gj?re endringer uten ? g? i bena p? hverandre.

2???Hvordan kan mitt prosjekt f? tilgang til subversion?

2.1???Hvem kan f? tilgang

Tjenesten er satt opp for uio-relaterte prosjekter der ansatte og studenter er deltakere. Prosjektene b?r ha en viss varighet. Tjenesten er ikke tiltenkt studentprosjekter i forbindelse med kurs, og med veldig f? deltagere. For slike prosjekter anbefales det ? sette opp et versjonskontrollarkiv i et av deltagernes hjemmeomr?der.

Studenter og ansatte ved Institutt for informatikk kan g? til ifis internsider om subversion (krever innlogging med UiO-brukernavn/passord) og be om opprettelse av repository p? instituttets egen SVN-tjeneste.

2.2???Praktisk informasjon

Tjenesten kj?rer p? UNIX-maskiner. Prosjektet m? ha et navn som kan brukes til ? lage arkivkatalogen til prosjektet, og det m? v?re tilknyttet en UNIX-filgruppe hvis medlemmer f?r skrivetilgang til prosjektet. Det m? ogs? opplyses om alle i verden skal kunne lese innholdet i prosjektarkivet, eller om det skal kun v?re lesbart for medlemmene i filgruppen. Navn b?r best? av bokstavene a-z, bindestrek og tall. For eksempel 'cerebrum' og 'search-group'. Filgruppe f?lger vanlig navngiving for grupper, og bestilles via bofh/cerebrum hvis en ny filgruppe m? opprettes. Hvis du ikke vet hva en UNIX-filgruppe er, h?r med din lokale IT-ansvarlige.

N?r disse punktene er avklart kan en sende en foresp?rsel til unix-drift@usit.uio.no om ? f? opprette et nytt prosjekt. Det er fint om en i henvendelsen kan estimere hvor mye plass en tror prosjektet vil trenge p? disken, slik at unix-drift kan vurdere om filomr?det m? utvides.

Subversion-URL til prosjektene har formen:

svn+ssh://svn.uio.no/svnroot/prosjektnavn

n?r det er opprettet.

Anonym lesetilgang til arkivkatalogene er mulig. Det aktiviseres ved ? gi alle lesetilgang til katalogene p? filsystemet som beskrevet under oppsett av et nytt arkiv. Anonym tilgang til prosjektet prosjektene har URL p? formen:

svn://svn.uio.no/svnroot/prosjektnavn

Skrivetilgang for brukere uten brukernavn ved Universitetet i Oslo er ikke tilgjengelig enn?. Det planlegges satt opp ved hjelp av WebDAV n?r webgruppen har f?tt apache 2 produksjonsklart. Meldt fra om slikt behov til unix-drift@usit.uio.no, helst n?r arkivet bes opprettet.

Om en ikke har en passende brukergruppe ? knytte prosjektet til, kan en be om ? f? en opprettet via Brukerinfo. Mer informasjon om dette finner man p? dokumentasjonen for Brukerinfo p? f?lgende URL:

http://www.uio.no/tjenester/it/brukernavn-passord/brukerinfo/hjelp/grupper/oppretting.html

3???Tips om bruk av Subversion

Oppsett av arkivet ut over opprettingen gj?res av prosjektdeltagerne selv. Her er noen tips:

3.1???Epost ved commit

Oppsett av epostutsending ved innsjekking av endringer beskrevet i Subversion tips page. Det fikses ved ? opprette en kj?rbar fil ved navn post-commit i hooks/-katalogen i arkivet. Innholdet kan v?re omtrent som dette:

#!/bin/sh

REPOS="$1"
REV="$2"
project="project-name"
mailto=list@uio.no

/local/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" -s SVN:$project $mailto

4???Oppskrifter for administrator av Subversjon-tjenesten

4.1???Diskstruktur for Subversion-tjenesten

Tjenesten er satt opp p? en maskin der alle uio-brukere har tilgang, slik at vi kan gi SSH-tilgang til arkivene. Dette kan bli endret i framtiden, hvis vi velger WebDAV som tilgangsprotokoll. Vi har to maskiner til Subversion:

vcs-usit.uio.no
Har alias svn.usit.uio.no og brukes til interne USIT-repositories.
vcs-uio.uio.no
Har alias svn.uio.no og er den generelle Subversion-tjenesten for alle UiO-brukere.

Subversion-arkivene ligger i et LVM-volum montert under /usit/<maskinnavn>/subversion-uio/, og en symlink /svnroot som peker dit er satt opp for brukerne. Den symlinken skal alltid brukes i stedet for full path for ? sikre at svn-URLer ikke endrer seg hvis tjenesten flyttes.

Prosjektarkiv opprettes s? under /svnroot/prosjektnavn/, men de ?nskede filrettigheter. De skal opprettes med et databaseformat (FSFS) som h?ndterer tilgang via NFS, slik at tjenesten i overgangsfaser kan kj?re p? flere maskiner mot samme nettverksdisk, og slik at tjenesten kan kj?re mot disktjenester som NetApp. FSFS er det som brukes i gjeldende versjon av subversion.

4.2???Hvordan opprette subversion-arkiv for et nytt prosjekt

Alle foresp?rsler om nytt subversion-arkiv skal ha egen RT-sak, og saksnummeret skal legges inn i /svnroot/prosjektnavn/README.txt. Dette gj?res for ? sikre at informasjon om hvorfor arkivet eksisterer er samlet p? et sted.

Et nytt subversion-arkiv opprettes av person med root-tilgang p? vcs-uio.uio.no (eller vcs-usit.uio.no) ved hjelp av svnadmin create, og gis s? de ?nskede filrettigheter for tilgang. Det er ikke n?dvendig ? spesifisere FSFS-format til svnadmin, da det er default i versjonen vi bruker. Oppskriften er som f?lger. Skriptet /site/bin/usit-svn-create utf?rer de n?dvendige kommandoene, og b?r brukes for ? redusere sjansen for menneskelig feil:

/site/bin/usit-svn-create <RT-ticket-id> <prosjektnavn> <filgruppe>

Eksempel:

# /site/bin/usit-svn-create "#12345" usit-tools ucore
info: Oppretter /svnroot/usit-tools.
info: Kj?r denne hvis kun gruppen skal ha lesetilgang til arkivet:
chmod -R o-rwX /svnroot/usit-tools

Scriptet utf?rer disse kommandoene for ? opprette et arkiv. Merk at arkiv som skal v?re lesbare for alle skal opprettes litt forskjellig fra arkiv som kun skal v?re lesbare for gruppen:

# svnadmin create /svnroot/prosjektnavn
# chown -R root:filgruppe /svnroot/prosjektnavn
# chmod -R g+rwX /svnroot/prosjektnavn
# chmod -R o-w /svnroot/prosjektnavn
# find /svnroot/prosjektnavn -type d | xargs chmod g+s
# echo "This repository was requested in RT #RT-ticket." >> /svnroot/prosjektnavn/README.txt

Hvis arkivet ikke skal v?re lesbart/tilgjengelig for andre enn medlemmene i gruppen, s? m? lesetilgang fjernes for alle andre:

# chmod -R o-rwX /svnroot/prosjektnavn

4.3???Litt om navngiving

Da subversion-arkivene er i et flatt navnerom, er det lurt ? velge navn med omhu. Prosjektnavnene b?r ha kun sm? bokstaver og eventuelt tall, for ? unng? at to prosjekter med navn som kun skiller p? stor og liten bokstav skaper forvirring. Det kan v?re lurt ? bruke prefikser for ? gruppere prosjekter som h?rer under samme avdeling/gruppe. Se p? de eksisterende arkivene for ? vurdere hvordan nye navn passer inn.

4.4???Sikkerhetskopiering

Med databaseformatet FSFS kan filene p? disken sikkerhetskopieres direkte uten spesiell dumping. Normal inkrementell TSM-backup brukes dermed for backup.

4.5???Utvide lagringsplassen

LVM brukes i dag for styre lagringsplassen til arkivene. For ? utvide brukes normale LVM-kommandoer som beskrevet i Introduksjon til Logical Volume Management (LVM).

4.6???Oppsett av anonym tilgang

Anonym lesetilgang til arkivkatalogene aktiviseres ved ? gi alle lesetilgang til katalogene p? filsytemet. Dette er satt opp ved hjelp av svnserve og xinetd. Filen /etc/xinet.d/svn er opprettet med f?lgende innhold:

# default: off
# description: The svnserve provide anonymous access to subversion
service svn
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = svn
        server          = /local/bin/svnserve
        server_args     = -r /svnroot -i -R
        log_on_failure  += USERID
}

En symlink /svnroot/svnroot -> . er satt opp for ? kunne ha samme URL-struktur p? anonym og ikke-anonym tilgang.

4.7???Internt USIT-tjeneste svn.usit.uio.no

For mer sikkerhetsf?lsomme arkiver har USIT en egen tjeneste p? svn.usit.uio.no. Denne er satt opp p? samme m?te som beskrevet her, og nye arkiver etterlyses p? samme m?te via unix-drift.

Av unix-drift
Publisert 20. feb. 2013 11:26 - Sist endret 8. mai 2024 02:17