Převod CVS repozitory do SVN

od aichi E-mail

Donedávna jsem operoval na Windows 2000 a své vlastní projekty jsem verzoval na lokálním CVSNT serveru. Počítač odešel a nastal čas koupit nový a tím pádem i nová Windows. Tedy Windows Vista 64b.

...

Peripetie s CVSNT

Nastala instalace CVSNT serveru a překopírování starého repozitory. Nyní nastala fáze spuštění repozitáře a nastavení přístupů. Podle manuálu je nutné se připojit pomocí protokolu :sspi, který funguje na Windows a využívá pro práci s repository uživatele s Windows. Pomocí příkazu:


cvs passwd -r aichi -a aichi

nastavuji, že uživatel aichi z Windows bude jako uživatel aichi v CVS a přiřadím mu heslo. Pomocí protokolu :sspi: přístup k repository probíhal v pořádku. Jenže běžné programy tento protokol neznají a používají pouze pserver, sserver a ext. Pomocí ani jednoho z nich se nelze do repository přihlásit. Chybová hláška říká: Fatal error, aborting. aichi: Switch to user failed due to configuration error.

Diskutéři řešící tento problém odkazují na použítí protokolu sspi. Jak použít sspi protokol, když ho nikdo nepodporuje? V manuálu CVSNT je postup jak přes protokol ext použít sspi. V adresáři CVSNT vytvoříme extnt.ini a v něm např tyto hodnoty:


[localhost-test]
protocol="sspi"
hostname="localhost"
directory="/test"

Takto můžeme přistupovat k více CVS repozitářím, jedinou podmínkou je jedinečnost názvu sekce. Poté stačí použít tyto údaje pro přihlašovací řetězec, konkrétně pro eclipse:


:ext:.@localhost-test:/test

Kde za uživatele . značí, že bude ignorován uživatel a heslo a bude vzat aktuálně přihlášený. Název serveru je shodný s názvem sekce v ini souboru. Nyní je eclipse nutné říct, jaký soubr má použít pro ssh v ext protokolu. V Preferences > Team > CVS > Ext Connection Method nastavte vše dle obrázku:

Pak by se měl eclipse připojit, bohužel ne mě:

Pohár přetekl.

Přechod na SVN

Rozhodl jsem se pro přechod na SVN. Úkoly byly dva, první z nich byl najít Windows SVN server a druhý byl převést stávající repository do SVN. Tigris má vlastní server, ale daleko pohodlnější bylo zvolit nadstavbu Visual SVN Server, který po nainstalování ihned běží a lze na jedno kliknutí použít uživatele přímo z Windows.

Na stránkách Tigrisu je převodní skript cvs2svn. Pro jeho použití je potřeba udělat pár instalačních příprav. Zaprvé, je nutné nainstalovat Python, protože, celý cvs2svn je napsané v Pythonu. Dále pro svůj běh potřebuje GNU sort, který se běžně nachází na *nix systémech. Kde ho na Windows vzít? Je nutné stahnout CoreUtils a také "dependencies zip file", kde jsou dvě vyžadované dllka.

Nyní stačí utilitu spustit. Utilita přistupuje k CVS repository přímo, bez žádného CVS klienta. Můj příkaz vypadá nějak takto:


c:\Python25\python.exe cvs2svn -s c:\SVNRepositories\converted c:\cvsrepo\test --svnadmin c:\cvs2svn\svn\svnadmin.exe --encoding=cp1250 --sort=c:\unix-utils\bin\sort.exe

Skript vytvoří nové SVN repository converted do kterého jako podadresáře převede jednotlivé CVS moduly. To je trochu hloupé, ale nenašel jsem možnost jak vykopírovat jednotlivé moduly do jednotlivých repository. Při převodu jsou zachovány jak větve, tak tagy i všechny commit zprávy.

Repository je ihned funkční, jsem spokojen.

Adresy zpětných odkazů pro tento příspěvek:

Trackback URL (right click and copy shortcut/link location)

Zatím žádná reakce

Napsat komentář


Vaše e-mailová adresa nebude zveřejněna.

Adresa Vašich WWW stránek bude zveřejněna.
(Konce řádku budou převedeny na <br />)
(Jméno, email a webová stránka)
(Dovolí ostatním uživatelům kontaktovat Vás prostřednictvím formuláře pro zprávy (Vaše e-mailová adresa NEBUDE zveřejněna.))