2009-07-18 6 views
10

Ich möchte etwas mit Mercurial herumspielen, also versuche ich eines meiner vorhandenen Repositories zu konvertieren. Ich betreibe den folgenden Befehl auf meinem Mac:Wie konvertiere ich mein Git-Repository zu Mercurial und bringe seine Tags mit?

hg convert myrepos myrepos-hg 

Der Befehl wurde erfolgreich alle meine Commits importiert, aber es bringt nicht entlang der 8 oder so Tags, die im Git-Repository markiert wurden (noch sind eine der Zweige für diese Angelegenheit). Gibt es einen speziellen Parameter, den ich festlegen muss, damit meine Tags in Mercurial importiert werden?

+1

Konvertieren von Git in Quecksilber? Hier, lesen Sie diese Geschichte der Warnung zuerst: http://www.gksoft.com/a/fun/hal-ibm.html –

Antwort

6

Sind Ihre Tags leichtgewichtige Git-Tags oder voll mit annotierten Tags? hg convert konvertiert nur annotierte Tags, aber Git erstellt standardmäßig leichte. Ich hatte dieses Problem, als ich kürzlich eines meiner Repositories konvertierte. Sie können überprüfen, was sie sind wie folgt:

git ls-remote --tags . 

Lauf hg convert werden nur die Tags konvertieren, die in ^{}, die kommentierten diejenigen beenden. Sie haben zwei Möglichkeiten:

  • Patch die git.py hgext Erweiterungsdatei konvertiert alle Arten vor
  • Änderung Umwandlung

Mit einem kleinen Shell-Skript kommentierten Tags Ihre git-Tags zu konvertieren und die --force Option zu git-tag Sie können alle Ihre Tags mit Anmerkungen versehen.

+0

Das war das Problem. Danke für den Tipp! –

3

Dies ist ein etwas bekanntes Problem. Sie können versuchen, die folgende Datei /usr/lib/python2.6/site-packages/hgext/convert/hg.py Patchen (oder wo auch immer es sich befindet) durch diese Veränderung:

extra = {'branch': self.tagsbranch} 

zu:

extra = {'branch': 'default'} 

und dann erneut konvertieren.

EDIT: Bei einem tieferen Blick auf den Zustand der Dinge scheint es, dass es schwierig sein kann - es ist nicht unmöglich - zu tun, was Sie wollen. Umso mehr, um es richtig zu machen.

Da Sie nur 8 Tags haben, sollten Sie sich die Mühe sparen, indem Sie die .hgtags-Datei von Hand erstellen. Du kannst später herausfinden, was mit "hg convert" los ist (ich werde auch meine Augen schälen).

Glück.

+0

Ich änderte die Datei als entsprechend (es war in /Library/Python/2.5/site-packages/...), aber leider werden die Tags nicht konvertiert und die .hgtags-Datei erstellt. –

1

Ein Vorschlag, den ich in der Vergangenheit gesehen habe, ist die Verwendung von svn als Zwischenschritt. Sowohl git als auch hg haben eine ausgezeichnete bidirektionale svn-Konvertierung.

Verwandte Themen