Guide: Subversion (SVN)

From rtgkomArkiv
Jump to: navigation, search

Om systemet[edit]

Fra wikipedia.dk

Subversion er et open source system for revisionskontrol, sometider kendt som svn fra navnet på kommandolinje grænsefladen. Subversion er designet specifikt til at være en moderne afløser til CVS og er udviklet af en række af de samme nøgleudviklere. Subversion er i stand til at håndtere korrekt versionering af binære filer, hvilket kun har været dårligt understøttet i CVS.

Centralt for subversion (og mange andre versioneringssystemer) er et repository, som er et centralt dataregister, der vedligeholder filer gemt via subversion. Når burgere skal benytte filer fra dette repository foretager de et checkout. Et checkout giver brugeren en lokal kopi af filerne som de derefter kan arbejde med. Når brugeren derefter er færdig med arbejdet og vil dele arbejdet med de andre personer, der også har adgang til repositoryet foretager vedkommende et commit. Dette sender filen til repositoryet, der kun gemmer forskellen i de ændrede filer. Dette har flere fordele:

  • Forskellen i filerne er typisk mindre end selve filerne, hvormed det er pladsbesparende at gemme forskellen mellem hver revision i forhold til at gemme hele filen for hver revision.
  • Det giver mulighed for at gå tilbage til gamle versioner af filer, merge (sammensmelte) forskellige versioner etc.

Et commit fjerner ikke de lokaler filer men synkroniserer derimod blot indholdet lokalt og i reposityet. En af de store fordele der opnås ved at benytte et versionseringssystem er at flere personer kan redigere i forskellige sektioner i samme fil. Systemt kan selv administere sammensmeltningen af filerne i repositoryet. Der vil dog være situationer, hvor systemet ikke er i stand til at udrede, hvilke rettelser, der kan bestragtes som de endelige. I sådanne sitautioner vil det være op til en bruger at løse de konflikter der i så fald er i filen. Det er ikke tilladt - eller muligt - at indsende filer i konflikt til repositoryet, hvilket medfører at konflikten skal løses af den bruger der ikke har fået de ændrede filer sendt.

Opsætning[edit]

Windows[edit]

Er du windows bruger skal du have fat i værktøjet

Unix-like systemer[edit]

Brug din pakkemanager til at hente

  • subversion
  • rapidsvn - Denne er et GUI interface til subversion og kan valgfrit installeres

Brug[edit]

Bemærk: denne guide tager udgangspunkt i et command line interface, samt enkelte GUI eksempler, på en Unix-like installation. Principper og metoder fremsat her er dog generelle og kan bruges på tværs af clienter, som såvel operativsystemer. Er man windows bruger er det sandsynligt du vil finde denne guide fra Aalborg universitet mere brugbar - du skal dog først have gennemgået oprettelsen af dit repository (se nedenfor).

Repository oprettelse[edit]

Vi skal starte med at oprette et såkaldt repository som er vores arkiv/bibliotek og bibliotekar, i metaforisk forstand, da det ikke kun er et arkiv med potentiale som roddebunke, men rent faktisk bliver holdt pænt af systemet selv.

Vi starter med at logge på serveren ved en tekst baseret SSH session. Hvis du har glemt hvordan så gjorde vi sådan her. Lad os få oprettet vores repository. Forstil dig det som en mappe med få advancerede ændringer, for det er rent faktisk blot en mappe du skal til at oprette, blot med vigtigt indhold som fortæller os om indholdet af vores repository. Derfor er det også lige til at slette vores repository igen. Vi sletter bare mappen. Men nu til det væsentlige. Tast det følgende

svnadmin create DIT_REPOSITORY_NAVN

...Hvor du udskifter DIT_REPOSITORY_NAVN med dit eget ønskede.

Du er nu færdig og klar til at gå igang.

Almeen brug[edit]

Denne del af guiden er begrænset, og hvis nogle har lyst til at fyldstgøre den er de meget velkommen. Dog betyder dette at guiden på nuværende tidspunkt kun vil omhandlede det absolutte fundamentale.


Q: Hvordan tilkommer man sit repository udefra (dvs. ikke lokalt på webserveren)?[edit]

A: MediaLab tilrådestilliger kun SSH protokollen. Derfor kan det understående udtryk benyttes i forbindelse med "svn-commands" hvor man ønsker at tilkomme sit repository udefra.

svn+ssh://DIT_USER_ID@rtgkom.dk/FULD_STI_TIL_DIN_HJEMMEMAPPE/DIT_REPOSITORY_NAVN

...Hvor

  • DIT_USER_ID er dit buger login på webserveren. fx. nicholasmr05
  • FULD_STI_TIL_DIN_HJEMMEMAPPE er den fulde sti til din hjemmemappe lokalt på serveren. fx. /filer/2005-2006/nicholasmr05
  • DIT_REPOSITORY_NAVN det du valgte at kalde dit repository tidligere (det er her forudsat den ligger i din hjemmemappe - dette er selfølgelig ikke nødvendigt)

Q: Hvordan importere jeg filer/mapper?[edit]

svn import FILE svn+ssh://DIT_USER_ID@rtgkom.dk/FULD_STI_TIL_DIN_HJEMMEMAPPE/DIT_REPOSITORY_NAVN/NYE_UNDERMAPPE/FILE_2 -m "LOG_MSG"

...Hvor:

  • FILE er din lokale sti til den mappe/fil du vil importere.
  • DIT_USER_ID er dit buger login på webserveren. fx. nicholasmr05.
  • FULD_STI_TIL_DIN_HJEMMEMAPPE er den fulde sti til din hjemmemappe lokalt på serveren. fx. /filer/2005-2006/nicholasmr05.
  • DIT_REPOSITORY_NAVN det du valgte at kalde dit repository tidligere (det er her forudsat den ligger i din hjemmemappe - dette er selfølgelig ikke nødvendigt).
  • NYE_UNDERMAPPE er en ny undermappe i dit repository som din fil/mappe vil blive gemt i. Det er jo ikke sikkert du vil bruge den nederste mappe, roden, som roddebunke og importere alt dertil - du kan strukturere med lige så mange undermapper du ønsker.
  • FILE_2 er det navn FILE, som du importere, vil få i dit repository. Dette behøver ikke nedvendigvis være det samme!
  • LOG_MSG er en selvbestemt besked/log du giver den nye revision, hvori din nye fil er blevet tilføjet. Dette kunn fx. være "FILE_2 blev importeret".


Q: Hvordan laver jeg et "checkout" (downloader til en lokal sti) af mit repository?[edit]

svn checkout svn+ssh://DIT_USER_ID@rtgkom.dk/FULD_STI_TIL_DIN_HJEMMEMAPPE/DIT_REPOSITORY_NAVN ./

Se ovenfor for en beskrivelse af DIT_USER_ID, FULD_STI_TIL_DIN_HJEMMEMAPPE og DIT_REPOSITORY_NAVN.


http://www.rtgkom.dk/~nicholasmr05/skole/medialabs_guides/svn/svn_1.png

Normal ville du skulle indtaste password, i mange tilfælde dobbelt (eller flere gange) - dette er helt normalt.

Q: Hvordan laver jeg et "commit" (sender ændringer af "checkout"'s data tilbage til repository)?[edit]

$> cd STI_TIL_WORKING_COPY
$> svn commit -m "LOG_MSG"

Hvor:

  • STI_TIL_WORKING_COPY er den lokale sti til den mappe du lavede checkout af.
  • LOG_MSG er en selvbestemt besked/log du giver den nye revision. Dette kunn fx. være "Jeg har tilføjet X ved at gøre X".

Netadgang via ViewVC[edit]

Programmet viewvc er et webinterface til at kunne browse sit repository med. Bemærk at du kan ikke lave "commits" og ændre i dit repository, men kun "læse" fra det. For at du kan få dit repository vist vha. ViewVC, skal dit repository være tilføjet en af vores (MediaLabs webserver) konfigurationsfil. Dette sker ikke af sig selv! Hvis du derfor ænsker denne funktionalitet bedes du henvende dig til en af MediaLabs driftansvarlige.



http://www.rtgkom.dk/~nicholasmr05/skole/medialabs_guides/svn/svn_viewvc.png

Mere[edit]

For en dansk guide til svn programmets faciliteter via kommandolinjen henvises der til: http://wiki.diku.info/index.php?title=Subversion

træt af at blive spurgt om kode konstant?

http://forums.site5.com/showthread.php?t=11008

http://macromates.com/blog/archives/2005/11/06/subversion-support-and-ssh-key-pairs/