Subversion guide: Difference between revisions
mNo edit summary |
(No difference)
|
Revision as of 14:04, 7 January 2012
Sätt upp din versionshanterande miljö
Vi startar med att sätta upp ett litet projekt testProj. Skapa de filer och bibliotek vi tänker jobba med:
I trunk lägger vi de filer vi ska jobba med, i det här fallet bara en fil som heter file1.txt:
file1.txt
Detta är en liten textfil som vi använder för att testa svn.
Här vill vi ha vårt repository:
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.
Nu flyttar vi in våra filer i vårt nya repository.
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:
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.
Keyword substitution
Med keyword substitution kan man få viss text att uppdateras automatiskt av svn. Genom att använda sig av tex keyword "Id" i en fil kan man få svn att uppdatera filen med information om vem som senast checkade in ändringar i filen, när detta gjordes samt i vilken version. Här är ett exempel på hur det kan se ut:
$Id: filename.abc 452 2008-11-06 06:56:55Z mats $
För att åstadkomma detta: Lägg in keyword Id någonstans i filen.
Här är texten innan ditt keyword. $Id$ Här är texten efter ditt keyword.
Template:Box Kod Varje gång du sedan checkar in filen kommer texten i filen vid Id att uppdateras.