Hoppa över introduktion.

VargaBlogg

Betraktelser från en svensk i Norge.

Här hittar du mitt lilla klotterplank där jag skriver saker jag tänker på.

I min blogg skriver jag om livets små och stora orättvisor, om skräppost, veterandatorer, brädspel, norrmän, aktuella och inaktuella händelser, teknik och vadhelst annars som faller mig in – med andra ord en salig röra. Alla åsikter som skrivs ut är naturligtvis mina egna, och alla likheter med levande personer är självklart avsiktliga.

Dessa sidor använder automatiskt språkval, om du hellre vill läsa på engelska kan du välja denna sida istället. Se hjälpen för information om hur du får din vävläsare att välja rätt språk automatiskt. En månadsöversikt är också tillgänglig.

© Upphovsrätt till all text och bild ägs av Peter Krefting, såvida inte annat anges. Mer om författaren.

Importera versionshistorik från CVS till Git

Publicerad: Torsdag 2007-09-13.

Jag har ganska länge använt CVS för att versionshantera flera av mina projekt, till exempel är hela den här bloggen, och vävplatsen den ingår i, versionshanterad i CVS. Ett av de stora problemen med CVS är att det är centraliserat, något som kräver att nya användare som ska få tillgång till utvecklingen måste tillåtas åtkomst, dessutom kräver det att man hela tiden har nätverkstillgång för att kunna göra något som helst användbart. Därför har jag nyligen intresserat mig av distribuerade versionshanteringssystem.

Mina första försök var som översättare av Dpkg när den dåvarande huvudutvecklaren gick över till att versionshantera Dpkg med Arch. Jag satte mig aldrig tillräckligt in i Arch, och fick aldrig riktigt översikt över hur det fungerade, så översättningen blev eftersatt ett tag. Dpkg har numera gått över till att använda Git, vilket jag däremot har satt mig in desto mer i. (Ett annat projekt jag översätter, Apt, använder Bazaar, en efterföljare till Arch som jag inte heller helt har hunnit sätta mig in i.)

Eftersom jag tyckte Git verkade vara bra uppbyggt bestämde jag mig för att försöka flytta över en del av mina egna projekt till systemet. Jag började med mitt projekt Turquoise, ett statistikprogram för Fidonet och Usenet, som tyvärr inte varit under så väldigt aktiv utveckling på sistone. Efter modell från Dpkg bestämde jag mig för att ta med hela utvecklingshistoriken för projektet. Jag testade först både med Gits egna git-cvsimport och Tailor, men inget av dem klarade av att importera mer än huvudgrenen i CVS, och jag hade flera grenar med sidoutveckling jag gärna ville bevara.

Till min räddning kom Parsecvs som fick med sig allt. Nackdelen med Parsecvs är att man måste ha tillgång till det fysiska CVS-arkivet för att köra det, det tolkar nämligen filerna i arkivet direkt. Men det gör det bra, såvida man inte har gjort allt för mycket magiskt med cvs admin. Resultatet är att mitt projekt numera har ett Git-arkiv på Alioth och att jag försökt aktivera det lite mer, åtminstone tänkte jag försöka få in mallhanteringen jag påbörjade en gång för fem år sedan.

Mitt enda olösta problem för närvarande är att försöka komma på om det är möjligt att modifiera versionsträdet så att de sammanslagningar av grenar som jag utfört i CVS kan visas som Git-sammanslagningar (dvs. lägga till en ytterligare föräldranod på de versionerna).

Fotnot: För att omvandla CVS-arkivet till Git gjorde jag följande:

  1. Skapade filen Authors som innehöll en mappningstabell för CVS-användare. I mitt fall enbart raden
    peter=Peter Karlsson <peter@softwolves.pp.se>
  2. Från en katalog med Authors-filen och CVS-arkivet i, körde
    find turqstat -name "*,v" | parsecvs
  3. Kopierade/klonade .git-katalogen till Alioth.
  4. Flyttade definitionen av de importerade grenarna från .git/refs/remotes/origin/ till .git/refs/heads

Detta inlägg refereras i: Det rör ju på sig samt Nu i Git.

Kategorier: programvara. Dela: Facebook, Google+, e-post

| | Senaste inläggen | Denna månad | Alla månader och kategorier

Denna sida läses bäst på Internet.

peter@softwolves.pp.se