Versjonskontroll med SVN - Kunnskapsbasen
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
- Se Wikipedia sin side om Subversion (SVN)
Kontakt
Orakeltjenesten kan hjelpe deg om du har spørsmål eller opplever problemer.