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