Tilbake

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.

0 Vedlegg
12754 Visninger
Gjennomsnitt (0 Stemmer)