2016-05-04 14 views
-2

Ich beginne meine berufliche Karriere in der Programmierung und braucht Hilfe! Was ist der einfachste Weg, um von CVS nach Git zu migrieren?Migration von CVS zu GIT - einfachste Weg

+2

möglich Duplikat mit http://StackOverflow.com/Questions/20869710/Migrate-from-CVS-to-Git-ohne-Verlustgeschichte –

+0

Kontext: haben Sie bereits ein riesiges Projekt in CVS? – Makoto

Antwort

0

I cvsimport erfolgreich viele Male verwendet habe.

Ich habe festgestellt, dass es nicht funktioniert (unter Windows) von der Git BAsh, aber funktioniert gut von Cygwin.

Ich verwende die folgenden Optionen (offensichtlich Benutzernamen, Server ersetzen und Dateispeicherorte):

export CVS_RSH=ssh 
git cvsimport -v -d [email protected]:/path-to-cvsroot -C /cygdrive/c/git-repo -z 300 -R -p -q,-b,HEAD MYCVSPROJ 

Sie in der Dokumentation zu git-cvsimport und cvsps schauen, um zu sehen, was diese Optionen tun.

Diese Option kann auch inkrementell ausgeführt werden. Wenn also einige Benutzer CVS weiterhin verwenden, können Sie den Importvorgang trotzdem starten und später erneut importieren.

Die Importe sind in den Ursprungszweig (nicht mit einer Fernbedienung zu verwechseln).

Die Commits haben den Benutzernamen von CVS als user.name und user.email. Ein anderes Problem ist, dass die Zeiten alle in GMT sind. Dies kann mit dem folgenden behoben werden:

git filter-branch -f --env-filter 'export GIT_AUTHOR_EMAIL=${GIT_AUTHOR_NAME}@mycompany.com; export GIT_COMMITTER_EMAIL=${GIT_COMMITTER_NAME}@mycompany.com; export GIT_COMMITTER_DATE=$(echo ${GIT_COMMITTER_DATE} | perl -pe "s/ \+0000//"); export GIT_AUTHOR_DATE=$(echo ${GIT_AUTHOR_DATE} | perl -pe "s/ \+0000//");' --tag-name-filter cat -- --all 

Ein weiteres Problem ist, dass alle Dateien ausführbar sein wird, etwas, das ist wahrscheinlich nicht wollte. Um dies zu beheben, verwenden Sie diese Version von BFG Repo Cleaner, die alle Dateien nicht ausführbar macht.

Weitere Informationen finden Sie in der Dokumentation aller Tools/Befehle.

0

Die einfachste Möglichkeit besteht darin, den aktuellen Status Ihres Projekts zu übernehmen und in ein neues Git-Repository zu übernehmen. Sie werden die gesamte Geschichte des Projekts verlieren, aber das ist der einfachste Weg und darum haben Sie gefragt.

Wenn Sie das anspruchsvollste (am besten) Art und Weise wissen mögen, dann zuerst die CVS-Repository zu einer CVS-Repository mit cvs2svn umwandeln und dann das Ergebnis git verwandeln, mit svn2git (do nicht Verwendung git-svn für einen einmaligen Umwandlung, es ist nicht das richtige Werkzeug für diesen Zweck). Es gibt viele Tools mit diesem Namen. Wahrscheinlich ist das Beste das KDE-Gerät unter https://github.com/svn-all-fast-export/svn2git. Um das SVN-Repo-Geschichte im Voraus zu analysieren für die richtigen Regeln für svn2git Aufbau, könnten Sie svneverever von hier verwenden: http://blog.hartwork.org/?p=763

+0

Der erste Absatz beantwortet die Frage nicht. Die Frage ist nicht, "wie bekomme ich Code in CVS zu Git gehostet", sondern CVS nach Git migrieren, was offensichtlich bedeutet, dass der Verlauf erhalten bleiben sollte. –

+0

Das ist eine Definitionssache. Manche Leute halten die Geschichte für überflüssig und wären mit dieser Methode einverstanden. Nicht ich, sondern einige. Also dann nimm den zweiten Absatz. – Vampire

Verwandte Themen