Ich habe git cvsimport
verwendet, um mein CVS-Repository in ein brandneues GIT-Repository zu importieren.
Leider wurden in einigen Fällen einige Commits in falscher Reihenfolge gemeldet.
z. Ich hatte zwei CVS Revisionen einer Datei, rev1.1 um 11.39 Uhr und rev1.2 um 11.42 Uhr; In GIT kann ich einen Commit um 11.42 Uhr (mit Inhalt gleich rev1.2) und einen folgenden um 11.45 Uhr (mit Inhalt gleich rev1.1) sehen.
Ich kenne das bekannte Problem, das auf der cvsimport-Manpage
angegeben istWenn Timestamps von Commits im cvs-Repository nicht stabil genug sind, um Commits zu verwenden, können Änderungen in der falschen Reihenfolge angezeigt werden.
aber ich kann nicht verstehen, was stabil genug bedeutet.
Außerdem wäre es großartig, wenn mir jemand einen Workaround für dieses Problem zur Verfügung stellen könnte.
Vielen Dank
cghersi
Es ist sehr einfach, git in den Timestamp zu checken, da nur die lokale Zeit überprüft wird. Wahrscheinlich hat die cvs die Zeit in die Reihenfolge der Tags gesetzt.
Aber ein Workaround dafür ist cherry-pick . Dieser Befehl ist fast ein Copy-Paste von commits, also kannst du einfach ein checkout
zu einem Commit von rev1.1 geben und dort cherry-pick
in das Commit, das nach rev1.2 verloren gegangen ist. Dann benutze rebase -i
, um das duplizierte Commit nach rev1.2 zu löschen / zu quetschen. Wie bei der Verwendung von Rebase / Cherry-Pick wird der Baum des Commits einen traurigen push -f
in den Zweig anfordern, um alles zu reparieren.