2012-06-26 5 views
6

Ich würde gerne ein Git-Repository forkieren, es in Mercurial konvertieren und meine Änderungen zurück zum ursprünglichen Git-Repository bringen, wenn ich fertig bin. Mir geht es mehr um einen sicheren und stabilen Umwandlungsprozess als um seinen Komfort. Ich werde pull Änderungen von Git in Mercurial regelmäßig, aber selten Änderungen zurück.Beiträge von Mercurial zu Git beitragen?

Ich fühle mich nicht wohl mit hg-git, weil viele der Fehler gegen das Projekt seit Jahren unbeantwortet sind. Ich vermute, dass es sicherer ist, hg convert zu verwenden, um Git zu Hg zu konvertieren, als hg-git zu verwenden.

Meine Frage ist: sagen, ich habe bereits das Repository zu Mercurial konvertiert und einige Änderungen vorgenommen, Wie kann ich diese Änderungen zurück zum offiziellen Repository beitragen? Ich möchte meine Änderungen in das offizielle Git-Repository zurückgeben, ohne irgendwelche Historieninformationen zu verlieren (das heißt, ich möchte nicht mehrere Changesets zu einem zusammenfassen).

Was ist der einfachste und sicherste Weg, dies zu tun?

+2

Es gibt Gründe, ein modernes scm zu verwenden, wenn ein Projekt offiziell auf etwas wie svn oder cvs gehostet wird, also die breite Verfügbarkeit von Werkzeugen, um das zu erleichtern. Aber wenn das Projekt bereits in einem modernen scm gehostet wird, dann gibt es viel weniger Grund, nicht nur den gleichen scm lokal zu verwenden. – bames53

+0

@ bames53, stimme ich zu, aber wie viele andere Entscheidungen treffen wir täglich, dieser ist rein subjektiv :) – Gili

+1

Nur um sicher zu sein, Sie wissen, dass Link nicht auf die offizielle hg-git Repo? Das kann [hier] (https://github.com/schacon/hg-git) gefunden werden. – obmarg

Antwort

6

Sie können Ihre Mercurial verpflichtet als Patches versuchen und exportieren:

hg export --git -r 1 >patch.diff 

Diese .diff Datei von Git anerkannt werden soll und mit git apply zum git Repo hinzugefügt werden kann.

Die --git Möglichkeit hg export (Dies wurde script hg-fast-export erwähnt wurde auch in "Convert a Mercurial Repository to Git", wo die mehr up-to-date vorgeschlagen) vergewissert sich Sie diffs im git erweitert Diff-Format erzeugen. Weitere Informationen finden Sie unter hg help diffs.

+0

Werden dadurch nicht mehrere Changesets zu einem zusammengefasst? – Gili

+0

@Gili: Wenn das so ist, würden Sie einfach alle Hg-Revisionen auflisten, für die Sie sich interessieren, und für jede eine '.diff'-Datei erzeugen (die Sie wiederum auf Ihr Git-Repo anwenden würden). 'hg export' kann eine einzelne Revision oder eine Reihe von Revisionen durchführen. – VonC

+0

Ich habe einen schnellen Test durchgeführt: 'hg export --git -r 1 -r 2> patch.diff' bettet beide Revisionen in die gleiche Datei ein, bietet aber genügend Informationen darüber, welche Änderungen in welchen Changeset gehen. Ich glaube, das wird funktionieren. Vielen Dank! – Gili

Verwandte Themen