www.ntnu.no *
INFOWEB >  mine filer >  generelt  > Subversion (SVN) - Versjonskontroll
Tasks
You may add comments
Or e-mail this article
Read articles written by langemyh
User rating
How much did this article help you?
Much Some Little
Print preview
You do not need a 'printer-friendly page' to print this page. Here's why
Contents

Subversion (SVN) - Versjonskontroll

SVN er et versjonskontrollsystem. Poenget 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.

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 versjon som fungerte.

Det finnes mange ulike system for versjonskontroll:

Opprette et SVN repository

Før vi kan starte med å bruke et repository må vi ha noe å bruke. Hvis du ikke har tilgang til et, kan du lage et nytt på en av NTNUs unix-servere. For å logge inn på en av dem, kan du bruke for eksempel PuTTY og koble til login.stud.ntnu.no.

For å opprette et SVN repository, trenger du en mappe. Ved å bruke kommandoen svnadmin create path, gjør du om en mappe til et repository.

konsoll #1
					langemyh@caracal: ~/svn$ mkdir rep
					langemyh@caracal: ~/svn$ svnadmin create rep
				

Checkout

Det første man må gjøre er å hente ut filene fra et såkalt repository. Et repository er stedet der prosjektet ligger. Det er her alle filene og mappene blir hentet fra og legges i. For å hente ut filene fra repositoriet kjører man kommandoen checkout. Husk at man trenger en mappe, i dette tilfelle svn, som skal brukes til å legge innholdet i.

konsoll #2
					langemyh@caracal: ~/svn$ mkdir svn
					langemyh@caracal: ~/svn$ svn checkout file:///home/homer/la/langemyh/svn/rep svn/
					Checked out revision 0.
				

Nå har vi opprettet et repository, vi har tatt chechkout for å få alle filene som ligger der. Det neste blir at vi skal legge til filer i repositoriet.

Add

For å legge til filer, bruker man kommandoen add. Her legger jeg til filen som heter svn.html:

konsoll #3
					langemyh@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...
					
					langemyh@caracal: ~/svn/svn$ svn add svn.html
					A         svn.html
				

Commit

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

konsoll #4
					langemyh@caracal: ~/svn/svn$ svn help commit
					commit (ci): Send changes from your working copy to the repository.
					usage: commit [PATH...]

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

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

konsoll #5
					langemyh@caracal: ~/svn/svn$ EDITOR=vim; export $EDITOR; echo $EDITOR
					vim
				

Update

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

konsoll #6
					langemyh@caracal: ~/svn/svn$ svn help update
					update (up): Bring changes from the repository into the working copy.
					usage: update [PATH...]
					
					If no revision given, bring working copy up-to-date with HEAD rev.
					Else synchronize working copy to revision given by -r.
				
					For each updated item a line will start with a character reporting the
					action taken.  These characters have the following meaning:
				
						A  Added
						D  Deleted
						U  Updated
						C  Conflict
						G  Merged
					
					langemyh@caracal: ~/svn/svn$ svn update svn.html
					At revision 1.
				

Remove

remove fjerner en mappe eller en fil fra versjonskontrollen og da repositoriet.

konsoll #7
					langemyh@caracal: ~/svn/svn$ svn help remove
					delete (del, remove, rm): Remove files and directories from version control.
					usage: 1. delete PATH...
								 2. delete URL...
					
						1. Each item specified by a PATH is scheduled for deletion upon
							the next commit.  Files, and directories that have not been
							committed, are immediately removed from the working copy.
							PATHs that are, or contain, unversioned or modified items will
							not be removed unless the --force option is given.
					
						2. Each item specified by a URL is deleted from the repository
							via an immediate commit.
					
					langemyh@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.

konsoll #8
					langemyh@caracal: ~/svn/svn$ svn help status
					status (stat, st): Print the status of working copy files and directories.
					usage: status [PATH...]
					
						With no args, print only locally modified items (no network access).
						With -u, add working revision and server out-of-date information.
						With -v, print full revision information on every item.
					
						The first six columns in the output are each one character wide:
							First column: Says if item was added, deleted, or otherwise changed
								' ' no modifications
								'A' Added
								'C' Conflicted
								'D' Deleted
								'G' Merged
								'I' Ignored
								'M' Modified
								'R' Replaced
								'X' item is unversioned, but is used by an externals definition
								'?' item is not under version control
						
					langemyh@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.

konsoll #9
					langemyh@caracal: ~/svn/svn$ svn help diff
					diff (di): Display the differences between two paths.
					usage: 1. diff [-r N[:M]] [TARGET[@REV]...]
								 2. diff [-r N[:M]] --old=OLD-TGT[@OLDREV] [--new=NEW-TGT[@NEWREV]] \
												 [PATH...]
								 3. diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]
					
						1. Display the changes made to TARGETs as they are seen in REV between
							 two revisions.  TARGETs may be working copy paths or URLs.
					
							 N defaults to BASE if any TARGET is a working copy path, otherwise it
							 must be specified.  M defaults to the current working version if any
							 TARGET is a working copy path, otherwise it defaults to HEAD.
					
						2. Display the differences between OLD-TGT as it was seen in OLDREV and
							 NEW-TGT as it was seen in NEWREV.  PATHs, if given, are relative to
							 OLD-TGT and NEW-TGT and restrict the output to differences for those
							 paths.  OLD-TGT and NEW-TGT may be working copy paths or URL[@REV].
							 NEW-TGT defaults to OLD-TGT if not specified.  -r N makes OLDREV default
							 to N, -r N:M makes OLDREV default to N and NEWREV default to M.
					
						3. Shorthand for 'svn diff --old=OLD-URL[@OLDREV] --new=NEW-URL[@NEWREV]'
					
						Use just 'svn diff' to display local modifications in a working copy.

					langemyh@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.

konsoll #10
					langemyh@caracal: ~/svn/svn$ svn help revert
					revert: Restore pristine working copy file (undo most local edits).
					usage: revert PATH...
					
						Note:  this subcommand does not require network access, and resolves
						any conflicted states.  However, it does not restore removed directories.
						
					langemyh@caracal: ~/svn/svn$ svn revert svn.html
					Reverted 'svn.html'
				

Languages: no flag_en Comments: 0 Aid: 512 User rating:
 
 
Last updated: 2007-07-18 Author: langemyh Read: 453 times