Versionshantering – En kort historik
Historiken kring versionshanteringssystem är både lång och brokig. Versionshantering hjälper oss som bekant att hålla reda på ändringshistorik för våra filer. För programmerare handlar det oftast – men inte uteslutande – om kod.
Fördelarna med decentralisering
Många förknippar Git med att arbeta via ett konsolfönster eller en bash-terminal. Exempelvis så skapar git init
en ny, tom repository. Git använder en ”staging area” för att veta vad som ska ingå i nästa commit och git add <filnamn>
lägger till en fil i arean. Slutligen låter git commit
oss skriva historiken till vår lokala repository. För att synkronisera sin repository med en annan kan vi använda git pull
för att hämta ändringsinformation, alternativt git push
för att skicka våra egna ändringar till en avlägsen repository. En commit i Git är alltså inte helt synonym med en commit i exempelvis SVN.
commit
OCH en push
. Det innebär i regel en inlärningskurva som gör det svårare att komma igång med jämfört med de centraliserade motsvarigheterna. Den som investerat tiden som krävs upptäcker däremot ofta fördelarna med ett decentraliserat versionshanteringssystem. Jag kan exempelvis skapa en lokal branch att arbeta i och använda git merge
för att slå ihop med min master-branch när jag är klar. Alternativt hade jag kunnat använda git rebase
för att se till att min branch aldrig ens förekommer i min historik. Eftersom att allting sker lokalt, så är det enbart jag som arbetar i min branch, och med rebase är den enbart synlig för mig. Först när jag är redo att dela med mig så körs git push
. Vi har alltså ett otroligt kraftfullt och flexibelt verktyg, men som även kan vara höljt i mystik för en användare.Visual Studio och Git
Nyligen skedde däremot en intressant utveckling från Microsofts sida – Stöd för Git i Visual Studio 2012! I och med Microsofts Update 2 till Visual Studio 2012 (även kallat Visual Studio 2012.2) så kommer verktyg för Git i form av en extension till nuvarande Team Explorer att släppas. Update 2 är för nuvarande på CTP-stadie (Community Technology Preview).
Verktyget möjliggör att vi till stor del kan arbeta med Git utan att lämna Visual Studio. Det innebär däremot inte att vi nödvändigtvis måste överge konsolen/terminalen om vi inte vill. Vi kan exempelvis använda Visual Studio som en visuell indikator för vår lokala repository och fortsätta att sköta operationerna ifrån en konsol om vi så önskar.
push/pull
mot en repository på exempelvis GitHub. Även Microsoft har satt upp möjligheten att använda TFS som central punkt att pusha mot – Här får vi numera möjlighet att välja mellan antingen Team Foundation Version Control eller Git. Men, en av de stora nyheterna här är fortfarande att vi inte måste använda TFS.
Git är ett system som är exceptionellt duktigt på att göra merges. Om ändringar från två olika versioner av samma fil behöver slås samman så kommer det större delen av tiden att gå smärtfritt. Vid de tillfällen Git inte klarar av att göra detta kommer vi bli tvungna att manuellt berätta hur vår merge ska ske. En fördel med att arbeta inifrån Visual Studio är att vi kan se vår diff direkt, utan att behöva lämna vårt IDE:
Eftersom Update 2 befinner sig i CTP (version 4 i skrivandets stund) så kommer troligtvis mer att hända innan den slutliga releasen. Nyheten är dock så intressant att vi inte kan bärga oss, utan följer utvecklingen och ger kurser i ämnet redan nu. Vi tar upp Git ur ett perspektiv för helt nya användare och undersöker skillnader mellan centraliserade/distribuerade system i större detalj. Vi tittar på konceptet kring hur Git använder en riktad acyklisk graf (DAG) för att enbart spara ändringar och vad detta får för konsekvenser ur lagringsperspektiv, samt hur arbetsflödet förenklas när flera utvecklare samarbetar.
Visual Studio 2012 är givetvis ett stort inslag, men vi kommer även att titta på hur vi kan gå utanför VS2012 för att kombinera konsolen och vårt IDE. Kursen håller samma höga kvalitet som blivit synonymt med övriga Edument-kurser och vi ser att intresset för distribuerad versionshantering är på uppgång.
/Eric Lavesson, Edument