Subversion guide: Difference between revisions
Line 114: | Line 114: | ||
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. | 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: | Här är ett exempel på hur det kan se ut: | ||
$Id: filename.abc 452 2008-11-06 06:56:55Z mats $ | $Id: filename.abc 452 2008-11-06 06:56:55Z mats $ | ||
För att åstadkomma detta: | För att åstadkomma detta: Lägg in keyword Id någonstans i filen: | ||
Lägg in keyword Id någonstans i filen | |||
Här är texten innan ditt keyword. | |||
Här är texten innan ditt keyword. | $Id$ | ||
$Id$ | Här är texten efter ditt keyword. | ||
Här är texten efter ditt keyword. | |||
Tala om för svn att det finns ett keyword i filen som den ska uppdatera: | |||
{{Cmd|svn propset svn:keywords "Id" filename.abc}} | |||
}} | |||
Varje gång du sedan checkar in filen kommer texten i filen vid Id att uppdateras. | Varje gång du sedan checkar in filen kommer texten i filen vid Id att uppdateras. | ||
[[Category:Gentoo Linux]] | [[Category:Gentoo Linux]] |
Revision as of 14:18, 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.
Vi kan nu editera vår fil som vanligt och titta på den efteråt.
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.
Med kommandot status kan vi se vad vi ändrat för något.
Vi kan nu göra commit på våra ändringar:
Och nu syns ändringen även av svn:
Vi kan se en log över vad som ändrats:
Med status kan vi se statusen på vårt projekt:
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:
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
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. Skapa en branch av senaste version av projektet testProj och skapa en branch med namn buggfix_1234:
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. Skapa en label av testProj som vi kallar release-1.0. Versionen som ska lablas är den som ligger i katalogen trunk i repository revision nummer 123:
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.
Tala om för svn att det finns ett keyword i filen som den ska uppdatera:
Varje gång du sedan checkar in filen kommer texten i filen vid Id att uppdateras.