sendxmpp – migrácia repository z CVS na git

Už niekoľko rokov som správcom zdrojového kódu nástroja sendxmpp, ktorým je možné posielať textové správy protokolom Jabber. Aktívny vývoj už trocha ustal, ale občas sa nájde nejaká oprava, ktorú by ľudia radi videli zahrnutú v oficiálnej verzii.

Navyše za tých pár rokov svet pokročil ďalej a CVS už nie je najmodernejším a najrozšírenejším nástrojom na správu verzií zdrojového kódu. Tým už je bezpochyby Git. Navyše je poskytovanie priestoru pre Git repozitár voľne dostupné (pre Open Source projekty), takže to bol jeden z dôvodov, prečo som sa rozhodol projekt sendxmpp premigrovať z CVS na git.

A tuto je návod, ako premigrovať CVS repozitár na Git. Možno sa vám bude niekedy hodiť:
Najprv si doinštalujeme potrebné nástroje. Za predpokladu, že používame Debian alebo Ubuntu, inštaláciu migračného nástroja spravíme jednoducho:

sudo apt-get install cvs git git-cvs cvsps

a prečítame si manuál man git-cvsimport.

Ak sa nám zdá, že inštalácia nástrojov je v poriadku, pristúpime k migrácii. Vytvoríme si dočasný adresár, v ktorom budeme pracovať:


mkdir -p ~/tmp/t1
cd ~/tmp/t1

Autentifikujeme sa do CVS repositára:

cvs -d :pserver:anonymous@cvs.platon.sk:/home/cvs login
Logging in to :pserver:anonymous@cvs.platon.sk:2401/home/cvs
CVS password: empty password

A spustíme samotnú migráciu s nasledovnými parametrami:

git cvsimport -v -d :pserver:anonymous@cvs.platon.sk:/home/cvs sendxmpp
Initialized empty Git repository in /home/github/tmp/t1/.git/
Running cvsps...
cvs_direct initialized to CVSROOT /home/cvs
cvs rlog: Logging sendxmpp
cvs rlog: Logging sendxmpp/examples
Fetching Changes   v 1.1
New Changes: 451 bytes
Fetching INSTALL   v 1.1
New INSTALL: 178 bytes
Fetching MANIFEST   v 1.1
New MANIFEST: 140 bytes
...
Fetching sendxmpp   v 1.21
Update sendxmpp: 16836 bytes
Tree ID 424d679c468ba36450d935defb8a0183c9cc5dca
Parent ID ae9f2b89d321c6cea0b6a14bb853a6035b2730c4
Committed patch 30 (origin +0000 2010-10-03 18:39:16)
Commit ID f83f095524bd455748318232c7731fe71dcaf11e
Fetching sendxmpp   v 1.22
Update sendxmpp: 16864 bytes
Tree ID 157eadb74c89d5efe12b2fd087ce8fe77ecdc9f1
Parent ID f83f095524bd455748318232c7731fe71dcaf11e
Committed patch 31 (origin +0000 2010-10-03 19:36:35)
Commit ID 853f620262fd19d45d7db90a27de928921b75006
DONE; creating master branch

Hotovo! V aktuálnom adresári máme nachystaný git strom, ktorý sme ale ešte neposlali do repositára. Takže vysvetlíme gitu, kam si prajeme skonvertovaný CVS repositár poslať. Pravda, založenie Git repositára som popri importovaní vyklikal na webe. Takže cestu ku Git repositáru poznáme a môžeme tam teda poslať náš CVS projekt:

git remote add origin https://github.com/lhost/sendxmpp.git
git push -u origin master

Username for 'https://github.com': lhost
Password for 'https://lhost@github.com': my_Very_strong_Secure_Password
Counting objects: 90, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (90/90), done.
Writing objects: 100% (90/90), 21.13 KiB, done.
Total 90 (delta 54), reused 0 (delta 0)
To https://github.com/lhost/sendxmpp.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

A teraz sa už možete kochať históriu vášho projektu. :-)