Wikier

Versjonskontroll med SVN

Subversion (SVN) er et versjonskontrollsystem, som er gunstig for å samarbeide om filer, samt å holde orden på endringer. 

English version - Version Control with SVN

Temaside om IT-hjelp | Sider merket med svn

Videre følger en veiledning på å opprette og bruke et SVN repository ved hjelp av SSH. Etter du har opprettet repositoriet, kan du også benytte grafisk programvare som for eksempel SmartSVN, TortoiseSVN eller Eclipse med Subclipse.

Opprette et SVN repository

Før du kan starte å bruke SVN, må du ha et repository. Dette er stedet der prosjektet, altså filene og mappene, ligger. Hvis du ikke har tilgang til et repository, kan du lage et nytt på en av NTNUs unix-servere. For å logge inn på en av dem, kan du bruke for eksempel ta en titt på SSH-artikkelen og koble til login.stud.ntnu.no. Ansatte kan logge seg inn på login.ansatt.ntnu.no.

Du kan opprette en reopsitory ved å bruke kommandoen svnadmin create <path>.

brukernavn@caracal: /svn$ svnadmin create rep

Bruke SVN via SSH

NB! Alle kommandoer som kjøres i forbindelse med SVN, må begynne med svn.

Checkout

Det første du må gjøre er å hente ut filene fra repositoriet. Dette gjør du ved å kjøre kommandoen checkout. Husk at du trenger en mappe, i dette tilfelle svn, som skal brukes til å legge innholdet i. For å finne hele stien til mappen din, kan du bruke kommandoen pwd.

brukernavn@caracal: /svn$ mkdir svn
brukernavn@caracal: /svn$ svn checkout file:///home/homer/br/brukernavn/svn/rep svn/
Checked out revision 0.    

Add

Det neste du må gjøre, er å legge til filer. Det gjør du ved å bruke kommandoen add. Slik kan du for eksempel legge til en fil under versjonskontroll:

brukernavn@caracal: /svn/svn$ svn add svn.html
A         svn.html

Commit

commit brukes når du skal laste opp din lokale versjon. Når denne kommandoen kjøres, vil den lokale versjonen (med oppdateringer), bli lastet opp til repositoriet.

brukernavn@caracal: /svn/svn$ svn commit svn.html
Adding         svn.html
Transmitting file data .
Committed revision 1.

Når du kjører kommandoen, vil du få opp en editor (standard pico). Her skriver man inn en liten kommentar på hva som er endret og eventuelt hvorfor. For å endre standard editor, kan du skrive:

brukernavn@caracal: /svn/svn$ EDITOR=vim; export $EDITOR; echo $EDITOR
vim

Update

update brukes til å laste ned den siste versjonen av en fil eller mappe.

brukernavn@caracal: /svn/svn$ svn update svn.html
At revision 1.

Remove

remove fjerner en mappe eller en fil fra versjonskontrollen og dermed også repositoriet.

brukernavn@caracal: /svn/svn$ svn remove svn.html
D         svn.html

Status

status viser hvilken status en fil eller mappe har. Her ser man blant annet om filen er lagt til, er i konflikt eller om den ikke er i versjonskontroll i det hele tatt.

brukernavn@caracal: /svn/svn$ svn status svn.html
R      svn.html

Diff

diff viser forskjellen mellom to filer eller mapper. Når du kjører denne kommandoen, vil alle forskjellene mellom filene eller mappene hos deg lokalt og i repositoriet skrives ut på skjermen.

  • + ekstra i lokal kopi
  • - ekstra i repositoriet
brukernavn@caracal: /svn/svn$ svn diff svn.html
Index: svn.html
===================================================================
--- svn.html    (revision 3)
+++ svn.html    (working copy)
@@ -198,4 +198,14 @@ ...

Revert

revert brukes for å gå tilbake til en tidligere versjon av en fil eller mappe. Dette skjer da bare lokalt, og vil fjerne de fleste lokale endringene.

brukernavn@caracal: /svn/svn$ svn revert svn.html
Reverted 'svn.html'

Help

help kan brukes før alle kommandoer for å få detaljer eller hjelp til å bruke de.

brukernavn@caracal: /svn/svn$ svn help add
add: Put files and directories under version control, scheduling
them for addition to repository.  They will be added in next commit.
usage: add PATH...

Videre

Ønsker du mer informasjon om SVN, kan man kjøre kommandoen man svn eller eventuelt svn help i SSH. Det finnes dessuten mye nyttig på svn-book.

Checkout fra egen PC

Etter å ha opprettet et svn-repository via SSH, er det gjerne ønskelig å kunne hente ned en kopi på den lokale maskinen din slik at du kan jobbe fra et mer kjent miljø.

Finne full sti

Mens du er koblet mot den eksterne serveren via SSH, naviger til mappenhvor repositoriet er.

brukernavn@caracal: /svn$ svnadmin create repository_name
brukernavn@caracal: /svn$ cd repository_name

Finn så den fulle stien med pwd:

brukernavn@caracal: /svn/repository_name$ pwd
/home/shomeb/b/brukernavn/svn/repository_name

Dette er da den fulle stien til ditt repository.

Mac og Linux

Lag en mappe hvor du ønsker å ha den lokale kopien, og naviger deretter til den med terminalen din.

mittnavn$ cd lokal_mappe

Checkout deretter repositoriet til din lokale maskin med kommandoen:

:lokal_mappe mittnavn$ svn checkout svn+ssh://ntnubrukernavn@login.stud.ntnu.no/home/shomeb/b/brukernavn/svn/repository_name

Bytt det som står etter login.stud.ntnu.no med stien du fant i forrige steg. login.stud.ntnu.no erstattes med eventuell annen serversti.

Windows

For Windows gjelder den samme stien, men checkout kan ikke gjøres fra kommandolinjen. Man må istedenfor installere en SVN-klient, f.eks. tortoiseSVN.

Kort om versjonskontroll

Et av poengene med versjonskontroll er at flere kan bruke de samme filene og redigere dem om hverandre. Dette gjør at man hele tiden kan ha en bedre oversikt over prosjektet. Hvis noen redigerer en fil og laster den opp kan du oppdatere din versjon av fila. Da blir det mye lettere å unngå overskrivninger av andre sine endringer. SVN er svært aktuelt å bruke på felles gruppeområder, mer om hvordan man oppretter slike grupper, finner du på siden om Enkel samhandling.

I tillegg til at versjonskontroll holder orden på endringer, holder det også kontroll på tidligere versjoner av filene. Hvis det oppstår problemer med filene eller liknende, kan man enkelt gå tilbake til en fungerende versjon.

Relevante lenker

Kontakt

Orakeltjenesten kan hjelpe deg om du har spørsmål eller opplever problemer.