Thomas Homepage

CVS in Subversion umwandeln

März 10th, 2007

Diese Anleitung basiert auf Markus Renschler’s Weblog-Beitrag.

Um den Wechsel von CVS auf Subversion leichter zu machen, gibt es das Tool CVS2SVN. Das Tool ist in Python geschrieben und benötigt einen aktuellen Interpreter. Daneben benötigt man entweder “co” von RCS oder einen CVS-Client. In meinem Fall (Portierung von CVSNT) hat es nur mit diesem CVS-Client funktioniert. Demzufolge muss man auch mit der Windows-Konsole arbeiten. Die Unix-Konsole-Emulation cygwin nutzt hier nichts, weil cygwin nichts mit CVSNT zurechtkommt. Ferner benötigt man das GNU-Tool sort (die Windows-Version gibt es in den CoreUtils for Windows). Von „CoreUtils for Windows“ benötigt man das binaries-Packet. Die fehlenden Dll’s gibt’s bei libintl und libiconv. Die Dll’s verstecken sich im Binaries-Packt im bin-Verzeichnis.

Eigentlich portiert CVS2SVN Repositories einzeln und komplett. Dabei entsteht für jedes Repository nur ein Trunk/Branches/Tags. Möchte man das ganze nach Modulen gegliedert, muss man diese einzeln konvertieren. Dazu holt man die Module einzeln aus den Repositories, kopiert sie an ein sicheres Plätzchen und erstellt jeweils im Modul-Verzeichnis einen Ordner namens “CVSROOT”, damit CVS2SVN das Modul als richtiges Repository anzusehen bereit ist.

Jetzt geht’s los. Zuerst erstellt man aus dem jeweiligen Modul ein Dumpfile:

python C:\Programme\cvs2svn\cvs2svn –use-cvs –dumpfile=C:\Rep\dumpfile.txt –sort=C:\Programme\coreutils\bin\sort.exe c:\Rep\cvs\test

Die Datei dumpfile.txt gilt es nun in SVN zu importieren. Dazu muss man an der entsprechenden Stelle im SVN-Repository zuerst ein Verzeichnis anlegen und einchecken (Im Beispiel: “test” – ich habe das bei meinen paar Modulen einfach mit TortoiseSVN gemacht). Anschließend kann man mit svnadmin den Import starten:

svnadmin –parent-dir test load C:\Rep\svn < C:\Rep\dumpfile.txt

Wenn alles glatt geht – was für meine Module der Fall war – hat man kurz darauf die kompletten CVS-Versionen im SVN-Repository. Cvs2svn berücksichtigt dabei auch Tags und Branches und sorgt dafür, dass die entsprechenden Verzeichnisse unter dem Projektverzeichnis (im Beispiel: “test”) entstehen.


Filed under: Computer | No Tag
No Tag
März 10th, 2007 20:20:53
2 comments

Jan
16. November 2007

Hallo.
Ich habe da mal eine Frage. Müssen nicht vor jede Option von cvs2svn 2 Bindestriche. Weil bei mir funktioniert es mit einem nicht. Ich hatte
{python
C:\programme\cvs2svn\cvs2svn –use-cvs –dumpfile= C:\Dumps\Test –sort=D:\Coreutils\programme\bin\sort.exe C:\CVS\Test }
eingegeben und da klappte es


didley
15. September 2009

Hallo,

ich habe versucht den Ablauf nachzustellen. Es wird ein dumpfile erzeugt aber dessen Inhalt hat eine Grösse von 43kb.

Beim Import in das CVS wird dann gemeldet:

Füge Pfad hinzu: source/400US/trunk …svnadmin: Datei nicht gefunden: Transaktion »110-1« etc.

Ist diese Meldung bekannt und gibt es hier eine Lösung dafür?

Leave a Reply