Frage

Verwendung https://github.com/andreynikiforov/vault2git Ich konnte ein Tresor -Repo in Git konvertieren und verwendete dann Mercurial's hg convert um ein HG Repo zu bekommen. Das einzige Problem ist, dass nach dem Laufen hg convert Die Daten des Änderungssatzes sind falsch.

Die Daten zeigen die Zeit, in der der Änderungssatz von GOT zu Mercurial anstelle des Commit -Datums konvertiert wurde.

Gibt es noch etwas, das ich tun muss, um die Daten zu bewahren?

War es hilfreich?

Lösung

Ich habe dies funktioniert, indem ich den Code entfernt habe, der die Committer -Informationen in der überprüft hg convert git Erweiterung in der Datei https://www.mercurial-scm.org/repo/hg-stable/file/09b200396384/hgext/convert/git.py Linien 125 zu 130:

        if n == "committer":
            p = v.split()
            tm, tz = p[-2:]
            committer = " ".join(p[:-2])
            if committer[0] == "<": committer = committer[1:-1]
            committer = self.recode(committer)

Sobald Sie dies entfernen, hg convert Verwendet die Autoreninformationen für das Datum. Sie müssen die Konvertitenerweiterung aus dem Repo -Link kopieren, sie ändern und dann zu TortoiseHg hinzufügen.

Warum muss dies getan werden:

Bei der Verpflichtung mit git, Es gibt zwei Datensätze in den Änderungenset -Metadaten: committer und author.

  • Der Autor ist die für den Code verantwortliche Person.

  • Committer ist die Person, die die Änderungen am Repository tatsächlich begangen hat.

Diese Unterscheidung ist in einem Open-Source-Projekt wichtig, bei dem die Person, die den Code verfasst hat, nicht unbedingt die Person ist, die ihn dem Repository anpasst und verpflichten Sie es dem Repository.

Vault2Git Verwendet die Vault -Checkin -Informationen (Committer und Datum des Commits) als Git -Änderungsset -Autoreninformationen. Die Git Committer -Informationen verwendet die Informationen des Git -Benutzers und das tatsächliche Datum des Commits (Ihr Standardbenutzer für das Repository). Sie können diesen Unterschied durch tun git cat-file <rev hash> auf einem Änderungssatz, der Vault2Git tut.

Dies funktioniert gut für Git, aber wenn Sie laufen hg convert, Mercurial verwendet die author Name und die committer Datum, um die mercruialen Änderungenset -Metadaten zu erstellen.

Andere Tipps

Du könntest es versuchen Hg-Git eher als die Konvertitenerweiterung. Es ist eine bidirektionale Brücke zwischen den beiden, die verlustlos sein soll. Dies muss Daten enthalten, sonst würden sich die Hashes bei jedem Ziehen ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top