Wenn Sie ein CVS-Repository in GIT importieren, entstehen irreführende Verhaltensweisen in Bezug auf Zeitstempel

9

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 ist
  

Wenn 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

    
Cristiano Ghersi 12.03.2015, 10:11
quelle

1 Antwort

0

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.

    
Ziul 07.11.2015 04:00
quelle

Tags und Links