lørdag den 5. januar 2008

Personlig versionsstyring

Da jeg tidligere skrev om versionsstyring kom jeg kort ind på den skelnen, som er opstået imellem centrale systemer som f.eks. CVS og Subversion på den ene side, og decentrale systemer som f.eks. Bazaar, Git og Mercurial på den anden side. Der bliver for tiden sagt meget om det, set fra begge sider, også selvom det måske umiddelbart ligner en lille forskel. Det vil jeg sådan set også godt sige noget om, men jeg vil først og fremmest sige, at jeg har (igen) valgt side.

For at forstå det, så skal der nok lidt historie på banen. Personligt mener jeg, at programudvikling uden versionsstyring er temmeligt absurd, også for projekter som er så små, at de må betegnes som hobbyprojekter.

I starten var der ikke rigtigt nogle værktøjer for menigmand, så vi klarede os med strategiske backupkopier, med alle de begrænsninger, som det medførte (f.eks. havde jeg en god ven og kollega, som på et tidspunkt arbejde på et stort og vigtigt WordPerfect dokument, og som derfor tog en jævnlig backupkopi - desværre til en og samme 5¼" diskette, og der er jo fysisk kontakt - og han havde taget backuppen tit nok til at han havde slidt disketten op, da han fik brug for den...!).

Jeg tænkte dengang meget på, om ikke jeg skulle bruge CVS, men CVS kræver en server, og serveren kunne ikke være Windowsbaseret, så det blev længe ved drømmen. Men så en dag fik jeg hardware nok til overs til, at jeg kunne installerede en linux, og så kunne jeg pludselig få en CVS server op og køre. Det gav nogle udfordringer, og CVS er jo - ja, det er jo CVS med sine egne underligheder - og selvom jeg brugte det meget en overgang, så var det korte af det lange, at jeg blev træt af at have repository liggende på en anden maskine.

Så kom Subversion, og det blev hurtigt modent nok, til at jeg kunne installerede en version på min maskine. Det krævede også nogle overvejelser, og har givet sine unikke kvaler, men den kører den dag i dag, og jeg et aktivt repository på min eksterne harddisk.

Men det føles stadig som en meget stor kanon at rulle ud for at skyde en meget lille gråspurv, at have dels et repository og dels en arbejdskopi af det, som man ønsker at versionsstyre. Afledt dels af min egen blog (se ovenfor), og dels af nogle konkrete udfordringer med lige hurtigt nok at få de rette rettigheder på vores lokale CVS server på arbejde, så kom jeg til at kigge på Mercurial. Og hold op, hvor er det nemt at bruge i det scenarie, hvor man kun er sig selv, og "bare" ønsker at have en "tidsmaskine" og en mulighed for en "en anden virkelighed". Det var oppe og køre stort set med det samme, og der er ikke mange udfordringer i det, hvis man bare har prøvet at prøve andre versionsstyringsværktøjer før.

Derfor har jeg nu valgt Mercurial som mit personlige versionsstyringssystem (Subversion kommer ikke ud i kulden lige med det samme - jeg har for mange data i den, som jeg ikke lige vil konvertere, men fremtiden tilhører altså Mercurial...).

Hvordan Mercurial er at bruge, hvis man er andre end bare sig selv, skal jeg ikke kunne sige noget om. Men det er der så heldigvis andre som kan: F.eks. har Mozilla valgt Mercurial, omend deres valgt vist mest havde overskriften "det var så det mindst ringe...", og Sun har valgt Mercurial til OpenJDK projektet. Jeg vil tro, at begge parter har givet valget en del overvejelse.

Inden man tager mine (og ovenståendes) ord for gode varer, så overvej alternativerne grundig. Git bruges så vidt jeg ved af Linux kerne udviklerne efter BitKeeper kontroverset, så det er bestemt heller ikke at kimse af. Bazaar folkene har gjort sig tanker om, hvad de kan at tilbyde i forhold til andre (ikke overraskende foretrækker de Bazaar), og der findes også denne sammenlignende artikel fra JavaWorld.

Ingen kommentarer: