Ich verwende Mac OS X 10.7.2 mit Git 1.7.8.2, installiert mit Homebrew, cvsps 2.2b1 und git-cvsimport.
Ich habe vor einiger Zeit mit einem Subversion-Repository eines Website-Projekts gearbeitet, das ich erfolgreich in ein Git-Repository umgewandelt habe. Während ich nicht an dem Projekt gearbeitet habe, hat ein Kollege, der nicht auf Subversion zugreifen und es nicht benutzen konnte, aber den letzten Checkout hatte, seine Änderungen in einem CVS-Repository gespeichert.
Ich möchte seine CVS-Commits konvertieren und sie auf mein Git-Repository anwenden. Aber ich habe keine Erfahrung mit CVS, da ich bisher nur mit Subversion und Git gearbeitet habe.
Im Moment versuche ich nur, sein CVS-Repositorium in Git zu konvertieren. (Vielleicht werde ich später ein Git Merge oder Git Rebase verwenden, um die konvertierten Subversion- und CVS-Repositorien in einem Git-Repository zusammenzuführen. Aber an diesem Punkt bin ich noch nicht.)
Er hat mir einen komprimierten Tarball seiner CVS-"Repo" geschickt. Wenn ich ihn entpacke, erhalte ich ein Verzeichnis, das dem Namen des Projekts entspricht, mit Dateien darin, die jeder Datei des Projekts entsprechen, aber mit einem ",v" am Ende jedes Namens zur Versionierung. Ich nehme an, dass der Tarball, den ich erhalten habe, nur ein Modul für ein CVS-Repository ist, was meiner Meinung nach ausreichend sein sollte.
Hier ist die Struktur meiner Dateien:
- ~/Sites/CVSROOT/
- sitename/
- .cvsignore,v
- index.html,v
- Bilder/
- ...
- sitename/
Die Befehle, die ich verwende, um das CVS-Modul in ein Git-Repository zu konvertieren, lauten wie folgt:
$ cd ~/Sites
$ rm -fr sitename # Make way for new git repo of same name.
$ git cvsimport -v -d ~/Sites -C sitename sitename
Dies ist die Ausgabe:
Initialized empty Git repository in /Users/remi/Sites/sitename/.git/
Running cvsps...
cvs_direct initialized to CVSROOT /Users/remi/Sites
cvs rlog: Logging sitename
cvs rlog: Logging sitename/.git
cvs rlog: Logging sitename/.git/hooks
cvs rlog: Logging sitename/.git/info
cvs rlog: Logging sitename/.git/objects
cvs rlog: Logging sitename/.git/objects/info
cvs rlog: Logging sitename/.git/objects/pack
cvs rlog: Logging sitename/.git/refs
cvs rlog: Logging sitename/.git/refs/heads
cvs rlog: Logging sitename/.git/refs/tags
DONE; creating master branch
fatal: refs/heads/origin: not a valid SHA1
fatal: master: not a valid SHA1
fatal: You are on a branch yet to be born
checkout failed: 32768
Wenn ich in das Verzeichnis des neuen Git-Repos gehe, mache ich git log
ergibt fatal: bad default revision 'HEAD'
.
Gibt es etwas, das ich übersehe? Gibt es noch andere Dateien, die ich vom CVS-Repository-Server meines Kollegen benötige?
Vielen Dank im Voraus für Ihre Hilfe!