Numera har de flesta lärt sig vikten av att använda säkerhetskopior. Men fortfarande är det väldigt många som ännu inte förstår fördelarna med att använda versionshantering. Det är synd, eftersom fördelarna är många.

Vad det handlar om är verktyg som behåller alla kopior av dina filer när du sparar undan dem. Det innebär att du kan gå tillbaka och se förändringar som gjorts mellan två tidpunkter. Systemet påminner om Time Machine, men skiljer sig ändå en hel del.

Det är primärt tekniker av olika slag som använder versionshantering och då framför allt programmerare. Men behovet finns även hos dem som lägger tid på kreativt arbete. Inte sällan försöker grafiker och skribenter manuellt hålla igång flera parallella filer för att kunna gå tillbaka om de gör fel.

Utbudet av verktyg att jobba med är stort. Det finns kommersiella alternativ som IBM Clear Case och Microsoft Sourcesafe – båda otillgängliga för Macanvändare - men för mind­re kontor och hemmabruk är de fria programmen som regel ett bättre val. Inte minst eftersom de är enklare att administrera.

Concurrent Versions System, eller CVS, har varit det klassiska valet. Versioner av detta program finns till nära nog alla plattformar och det antal projekt i världen som använder sig av verktyget är omfattande. Men det har 20 år på nacken. Även om det har utvecklats fram tills nyligen finns det andra applikationer som är bättre.

Det mest populära alternativet är det både öppna och fria Subversion, eller helt kort SVN. Även detta program har ett tiotal år på nacken, men är ändå väl lämpat för dagens behov. Utvecklarna hade dessutom den goda smaken att försöka göra det så kompatibelt med CVS som möjligt. Bland projekten som använder verktyget finns bland annat Apache, PHP och MediaWiki. Det håller, med andra ord, även för stora projekt.

Inget grafiskt verktyg medföljer
Även Apple är förtjusta i produkten. I Xcode finns till exempel inbyggt stöd för Subversion. Dessutom följer programmet numera med i OS X. Det innebär att du redan har allt på plats som du behöver för att komma igång. Givetvis släpar denna utgåva något, så om du vill ha den allra senaste får du installera applikationen själv. Men när detta skrivs är version 1.6.15 den senaste, medan en uppdaterad Snow Leopard erbjuder 1.6.5. Ingen stor skillnad, alltså.

Det följer inte med något grafiskt verktyg till Subversion. Även om det finns flera olika skal är det därför bäst att först lära sig de terminalbaserade grunderna. Låt oss därför titta på hur det fungerar.
Principen är att du skapar ett centralt lagringsutrymme. Där lagrar du sedan all din kod. När det är dags att göra en justering hämtar du aktuella filer till ditt arbetsutrymme. När du justerat färdigt skickar du in ditt nya verk där förändringarna lagras. Nu kommer båda versionerna att finnas på plats. Du kan sedan sköta filerna och jämföra dem med varandra.

  • Grafiskt är inte alltid bättre. Svnx är marginellt enklare än att använda sig av terminalen.

Eftersom vi börjar från grunden kommer du att göra allting från terminalen. Öppna helt enkelt programmet och gå till din hemkatalog. Du ska nu skapa det centrala lagret för din kod, vilket du gör med kommandot ”svgadmin”. Du kan givetvis döpa det till nära nog vad du vill, men i exemplet nedan blir det MacWorldSVN.

svnadmin create MacWorldSVN

Om du tittar i katalogen kommer du nu att se att en katalog skapats. Och i den flera kataloger och filer. Det är alltså där dina filer kommer att hamna. Var noga med att låta strukturen vara ifred. Dina egna filer skapar du på annat håll. Därför skapar vi en mapp för detta.

mkdir MacWorld

Skapa sedan en textfil i denna katalog. Använd texteditorn eller vilket annat verktyg som helst för att lägga in raden ”MacWorld är bäst!”. Vill du fortsätta med terminalen kan du använda dig av ”vi”, eller någon mer intuitiv applikation.

vi MacWorld/MW.txt

Nu är det dags att skicka in projektet i Subversion. Det gör du med kommandot ”svn”. Eftersom det är ett nytt projekt gör vi en import. Du behöver inte skriva någon kommentar, men det är en god idé att göra det, så låt det bli en vana direkt. Flaggan ”--message”, eller ”-m” hjälper dig med detta.

svn import MacWorld file:///Users/<ditt användarnamn>/MacWorldSVN/Macworld -m ”Första importen”

Om allting fungerar som det ska kommer Subversion att tala om för dig vad det importerat och att allting gått bra. Texten ”Committed revision 1” bör dyka upp. Det innebär att hela transaktionen gått igenom utan problem. Programmet kräver att hela kommandot ångar på utan fel. Skulle något ske rullas allting tillbaka så att centrallagringen inte hamnar i ett läge där filerna inte är i synk med varandra. Verifiera ändå att filen ligger där genom att lista innehållet.

svn list file:///Users/<ditt användarnamn>/MacWorldSVN/MacWorld

Nu måste du skapa en arbetsyta. Om du vill kan du tömma din originalkatalog ”MacWorld” och använda den. Annars bygger du en ny vid sidan om. För tydlighetens skull kan du göra det senare.

mkdir MacWorldWork
svn checkout file:///Users/<ditt användarnamn>/MacWorldSVN/MacWorld MacWorld-Work

Du får ett meddelande om att filen lagts till och nu finns MW.txt i din nya katalog. Öppna filen du har där och ändra någonting. Du kan till exempel lägga till en rad med texten ”Ingenting annat duger”. När du är klar med din justering sparar du filen och kontrollerar att Subversion är med på noterna. Notera att när du står i rätt katalog behöver du inte använda fullständiga sökvägar.

cd MacWorldWork
vi MW.txt
svn status

Om allt gått bra kommer du att se ett ”M” före filnamnet. Det innebär att filen modifierats och att den helt enkelt skiljer sig från hur den ser ut i centrallagret. Du skickar dina ändringar med kommandot ”commit”. Skriv en kommentar för att förklara vad du har gjort.

svn commit -m ”Lagt till text om att ingenting annat duger”

När kommandot rullar kommer du få information om hur det kopierar in data. Om allting går rätt till stängs transaktionen i slutet och du vet att allting är lagrat som det ska. Nu kan du lägga till ännu en fil. Skapa en ny textfil, MW2.txt, och lägg till den i ditt projekt.

vi MW2.txt
svn add MW2.txt
svn commit -m ”Ny fil”
svn list file:///Users/<ditt användarnamn>/MacWorldSVN/MacWorld

Nu ser du förhoppningsvis båda dina filer i listan. Vill du istället göra tvärtom och ta bort filer finns det kommando för det också. Notera att det också raderar filerna från din katalog, så var säker på att du verkligen vill utföra operationen.

svn delete MW2.txt
svn commit -m ”Tagit bort MW2.txt”

När du gjort ändringar kanske du glömt vad det egentligen var som skilde de olika versionerna åt. Det kan du lätt ta reda på med Subversion. Alla versioner finns i registret. Du kan både lista innehåll och skillnader.

svn log MW.txt

I listan du får nu ser du de olika versionerna. Längst till vänster finns en siffra som indikerar vilken utgåva det handlar om, till exempel ”r1” för den första. Du hänvisar till det numret för att se skillnaden. Du kan jämföra med den aktuella filen och mellan två tidigare varianter.

svn diff -r 1 MW.txt
svn diff -r 1:2 MW.txt

Ett plustecken kommer att visa vad som lagts till i den senare versionen. Minustecken visar motsatsen. Om du upptäcker att ändringarna du gjort inte är så bra kan du återgå till den äldre varianten. Även här är det numret till vänster du använder för att tala om vilken version du vill ha tillbaka.

svn update -r 1

Om du kör kommandot och tittar i filen kommer du att upptäcka förändringarna. Du har nu en äldre version i din mapp. Skulle du ångra dig har du en chans. För det är först när du exekverar ”commit” som ändringen verkligen slår igenom.

Det här är allt du behöver för att kunna använda Subversion i begränsad utsträckning själv eller med en liten grupp vänner. Blir ni fler dyker snart behovet av konflikthantering och förgreningar upp. Även detta är relativt enkelt när man kommer in i hur det fungerar.

Ett par saker till kan vara bra att känna till. Du har kanske noterat att vi använder prefixet ”file:///”. Anledningen till det är att Subversion är byggt för att också fungera på nätet. Detta är en stor fördel om du jobbar med människor som i andra städer eller andra länder.
Vidare innebär det att du inte behöver ta hand om centrallagringen själv.

Det finns mängder av företag som erbjuder tjänster som du kan ansluta dig till – inte minst Collabnet som finansierade Subversion. Detta är ett utmärkt sätt att följa säkerhetsregeln om tre kopior – originalet, en lokal klon och en extern spegel.

Photoshoptillägg populärt
Eftersom programmet är så populärt fungerar många utvecklingspaket tillsammans med Subversion direkt ur paketet, till exempel Xcode. Men det går faktiskt att lägga in funktionalitet i andra verktyg också.

Ett populärt tillägg är Pixelnovel som ger dig versionshantering direkt i Photoshop, ett annat är Ooosvn som ger dig samma möjlighet i OpenOffice.org.

SVN är, som du har märkt, ett textbaserat program. Många föredrar ändå ett grafiskt gränssnitt och det finns en hel del verktyg att lägga på toppen. Är du villig att betala för funktionen finns Cornerstone och Versions. Det är två utmärkta applikationer som är anpassade för OS X. Men det mest populära verktyget är sannolikt ändå det fria Svnx, trots att det är allt annat än vackert.

Att jobba i Svnx är inte särskilt mycket enklare än att använda kommandotolken. I synnerhet inte om du kan tänka dig att skripta de vanligaste kommandona. Men vill du ändå prova finns programmet att ladda ner på code.google.com/p/svnx. Google Code är för övrigt ett riktigt Subversionnäste.

Några märkligheter
Vad finns det då för nackdelar med Subversion? Tyvärr saknar programmet en liten nyckelfunktion som finns i många andra verktyg – taggar. När du har ett givet nolläge i din kod, till exempel en släppt version, är det smidigt att kunna markera detta läge för alla filer.
En annan märklighet är att tidsstämplar inte sparas undan. I stället är det de aktuella klockslagen när du hämtar hem filer som lagras. Detta gör det lite knepigare att hålla reda på hur gamla filerna i katalogen verkligen är och när de senast justerades.

Linux fader, Linus Torvalds, har dessutom offentligt kritiserat projektet för att revisionskontrollen är centraliserad. Det är inte något stort problem för det stora flertalet, men fick den finske kodaren att gå i taket.

Överlag är det ändå inget tvivel om att Subversion ändå är ett av de allra bästa verktygen, oavsett plattform. Det är stabilt, enkelt att använda och inte särskilt tungt. Tar du också med priset i bilden borde din eventuella tvekan vara helt bortblåst. Dessutom är Subversion oändligt mycket bättre än ingenting alls. Därför bör du se till att börja versionshantera dina filer redan nu.