Subversion guide: Difference between revisions

From Peters wiki
Jump to navigation Jump to search
Line 3: Line 3:
Vi startar med att sätta upp ett litet projekt testProj.  
Vi startar med att sätta upp ett litet projekt testProj.  
{{Box Kod|Skapa de filer och bibliotek vi tänker jobba med.|
{{Box Kod|Skapa de filer och bibliotek vi tänker jobba med.|
<pre style="border: 0px solid">
<pre>
# mkdir testProj
# mkdir testProj
# cd testProj
# cd testProj
Line 12: Line 12:
I trunk lägger vi de filer vi ska jobba med, i det här fallet bara en fil.
I trunk lägger vi de filer vi ska jobba med, i det här fallet bara en fil.
{{Box Kod|Skapa en fil i projektet|
{{Box Kod|Skapa en fil i projektet|
<pre style="border: 0px solid">
<pre>
# cd trunk
# cd trunk
# nano -w file1.txt
# nano -w file1.txt

Revision as of 21:53, 16 April 2008

Sätt upp din versionshanterande miljö

Vi startar med att sätta upp ett litet projekt testProj. Template:Box Kod

I trunk lägger vi de filer vi ska jobba med, i det här fallet bara en fil. Template:Box Kod

Min file1.txt:

# cat file1.txt
Detta är en liten textfil som vi använder
för att testa svn.

Här vill vi ha vårt repository:

# mkdir svnroot

Nu skapar vi vårt repository där de versionshanterade filerna ska ligga. I detta repository ska vi i princip aldrig röra något.

# svnadmin create /home/mats/svnroot/repos

Nu flyttar vi in våra filer i vårt nya repository.

# svn import testProj file:///home/mats/svnroot/repos/testProj

Skriv en liten kommentar i editorn som dyker upp, spara texten och stäng sedan editorn.

Adding         testProj/trunk
Adding         testProj/trunk/file1.txt
Adding         testProj/branches
Adding         testProj/tags

Committed revision 1.

Ta en titt på ditt repository:

# svn list file:///home/mats/svnroot/repos/testProj
branches/
tags/
trunk/

Editera en fil

Nu kan vi testa att checka ut vårt projekt och göra en ändring. När vi checkar ut projektet flyttas en kopia av det över till det biliotek vi står i när vi ger kommandot.

# mkdir tmp
# cd tmp
# svn co file:///home/mats/svnroot/repos/testProj
A    testProj/trunk
A    testProj/trunk/file1.txt
A    testProj/branches
A    testProj/tags
Checked out revision 1.

Vi kan nu editera vår fil som vanligt och titta på den efteråt.

# cat file1.txt
Detta är en liten textfil som vi använder
för att testa svn.
Har lagt till en rad.

Tittar vi på den från svn ser vi dock inte ändringen ännu, eftersom vi inte har checkat in ändringarna än, dvs svn läser filen i repositoriet och inte den lokala.

# svn cat file1.txt
Detta är en liten textfil som vi använder
för att testa svn.

Med kommandot status kan vi se vad vi ändrat för något.

# svn status
M      file1.txt

Vi kan nu göra commit på våra ändringar:

# cd /home/mats/tmp/testProj
# svn ci -m "En första checkin"
Sending        trunk/file1.txt
Transmitting file data .
Committed revision 2.

Och nu syns ändringen även av svn:

# svn cat trunk/file1.txt
Detta är en liten textfil som vi använder
för att testa svn.
Har lagt till en rad.

Vi kan se en log över vad som ändrats:

# svn log
------------------------------------------------------------------------
r1 | mats | 2008-03-13 08:53:02 +0100 (tor, 13 mar 2008) | 2 lines

First version

------------------------------------------------------------------------

Med status kan vi se statusen på vårt projekt:

# svn status -v
                1        1 mats         .
                1        1 mats         trunk
                2        2 mats         trunk/file1.txt
                1        1 mats         branches
                1        1 mats         tags

Första siffran anger working version, dvs vilken version av repository:t som filen kommer ifrån och den andra anger vilken senaste version av repository:t som filen ändrades i. Om man synkar upp till senaste version av repository:t med kommandot:

# svn up

så kommer första siffran på alla filer ändras till en 2:a. Om du ska göra flera ändringar är det bara att fortsätta editera, och sedan ev. checka in ändringarna. En checkout, hämtar bara en kopia av det som finns i repository:t och lägger i din workspace så att du kan jobba med filerna. Är ni flera användare, eller om du av någon anledning editerar från flera maskiner kommer

# svn up 

att lyfta in eventuella ändringar som gjorts av andra.


Skapa en branch

För att skapa en branch direkt i repository:t så gör man en kopia av t.ex. ett projekt från en viss version av repository:t och kopierar denna till branch katalogen. Man kan alltså skapa brancher direkt utan att ha någon workspace, men man kan också skapa brancher genom att kopiera mellan en workspace och repository:t och vice versa. Template:Box Kod

Skapa en label

Det finns inga direkta lablar i subversion liknande de som t.ex. finns i ClearCase. Istället så skapar man en kopia av en specifik version av repository:t och kallar denna för ett visst namn. Detta blir vår label. Detta är alltså samma manöver man gör när man skapar brancher. Enda skillnaden är man lägger kopia under den rekommenderade katalogen tags. Och man bör inte checka in ändringar till dessa kopior. Utan jobb bör göras under branches eller trunk och under tags ligger bara namngivna versioner, dvs våra s.k. lablade versioner. Template:Box Kod Dessa repository kopior är gratis, dvs de kostar ingen tid att skapa och de tar ingen extra plats i repository:t. Förrutom lite plats för meta-datat. Samma sak gäller brancher. Men ändringar som görs på en branch och sedan checkas in tar självklart mer plats i repository:t. Historien bevaras också vid en subversion kopiering. Man kan spåra från vilken repository version som branchen eller labeln skapades ifrån.