Versionsstyring eller ej?

Som solo udvikler har jeg længe ikke set det store behov i at bruge versionsstyringsværktøjer, som CVS, Subversion, Mercurial eller Git. Jeg har haft mine filer liggende i Dropbox hvor der bliver gemt revisioner af mit arbejde i 30 dage.

Jeg har dog hele tiden haft lysten til at se nærmere på versions styringssoftware, om ikke andet så bare for at se om det kunne hjælpe flowet i mit daglige arbejde, og måske tilføje et ekstra lag af sikkerhed – ja og for at se om det var besværet værd.

I dag kunne jeg ikke finde på at starte et projekt uden at det lever i et Git repositiory.

 

Startede med Subversion

Jeg gik i krig med at se hvad der var af muligheder for gode versionsstyringsklienter på Mac (jeg foretrækker et visuelt værktøj indtil jeg er godt nok inde i metoderne til at kunne arbejde fra terminal.app). Da jeg startede med at researche kendte jeg ikke ret meget til de forskellige platforme for versionsstyring, men fandt frem til at Cornerstone (http://www.zennaware.com/cornerstone/index.php) var et af de mest roste værktøjer på Mac.

Cornerstone arbejder kun med Subversion, og giver et rigtig godt overblik over mulighederne med versionsstyring.

Videre research viste dog at der i udviklersamfundet er en stigende modvilje overfor Subversion og at alle de “seje” bruger Git til versionsstyring.

Jeg stødte ikke på nogle af de problemer der nævnes i forbindelse med Subversion, men det skyldes vist mest at jeg netop sidder som solo udvikler og ikke konstant skal have kode flettet sammen med andres.

Men jeg vil jo selvfølgelig ikke grave mig ned i et hul og fortsætte med at bruge et system, som mange klager over i team sammenhæng.

Fortsatte med Git og Bitbucket

Skiftet fra Subversion involverede ikke kun et skift fra en metode, men også et skift af værktøj. Cornerstone understøtter (desværre) ikke andre systemer en Subversion.

Når man snakker Git, så kommer man ikke udenom at snakke om Github. Github er et online lager til ens projekter, og hele Githubs tanke er centreret omkring Open Source tankegange.

Jeg var dog ikke vild med at putte al min kode til offentlig skue, og flere af mine projekter er også af privat karakter. Ved Github er det dog muligt at købe sig til private repositories (som er de “mapper” de enkelte projekter lever i), men det er ret dyrt ved Github.

Jeg fandt frem til BitBucket, som tilbyder Git og Mercurial hosting. De giver den fulde pakke gratis for projekter med op til 5 udviklere. Det vil sige ubegrænset antal private repositories og ubegrænset plads (dog forbeholder de sig retten til at stoppe et repositori hvis det bliver misbrugt).

Bitbucket er oprindeligt et dansk website, der siden er blevet solgt til Atlassian, som også lavet en rigtig god Git/Mercurial client til Mac, kaldet SourceTree app.

Hvad er så forskellen mellem Subversion og Git (eller Mercurial)

Forskellen ligger i hvor revisionerne skabes.
Subversion er et centraliseret system, hvor man hele tiden fra klienten tjekker op mod den centrale server. Git er et decentraliseret system, hvor man arbejder lokalt, og til tider skubber ens revisioner ud til en central server.

Ved at være dencentral er git meget hurtigt at arbejde med, da der ikke skal tjekkes op mod en server for at se forskelle i filer eller for at se historikken. Git er jo en komplet kopi af det repository man har hentet koden fra.

Git “forurener” heller ikke ens folder struktur på samme måde som Subversion, som smider .svn foldere overalt i et projekt. Git har én .git mappe hvori ændringerne gemmes og hvor det bliver holdt styr på koden.

Det er også nemt (og det opfordres) at man ofte laver branches af den kode man arbejder på, og i Git er det meget hurtigt at lave en branch og merge den tilbage når man er tilfreds med resultatet. Denne proces er ofte en af de mest udskældte i Subversion (ud fra hvad jeg kan se på diverse developer fora), men skulle være bedre i senere versioner af Subversion.

For mig er fordelen at jeg kan arbejde på min kode offline uden at være afhængig af en internetforbindelse. Det er som nævnt sjældent at jeg ikke har net forbindelse, men det er nu rart at kunne fortsætte arbejdet uden at være afhængig af en remote server.

Jeg holder også af at min folderstruktur ikke har et hav af filer, som jeg ikke ønsker med i mine projekter (.svn).

Man skal heller ikke undervurdere at flere og flere projekter skifter over til git, hvilket gør hjælpen relativ nemt at finde på nettet.

Mine lokale git repositories har jeg placeret i min Dropbox folderstruktur, hvorved jeg også sikre mig en ekstra backup af de data jeg sidder og arbejder på.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *