Ich versuche ein mercurial-Repository zu git zu migrieren, aber das Problem ist, dass das mercurial-Repository Unter-Repositories (einige mit Zweigen) und viele Merges und Verzweigungen selbst hat. Ich möchte, dass das endgültige Git-Repository diesen gesamten Verlauf behält und korrekt und vollständig ist, wenn ich frühere Teile des Repositorys oder anderer Zweige auschecke. Ich brauche das neue Repository nicht, um Submodule oder Teilbäume zu haben, obwohl ich auch eine Lösung mit diesem akzeptieren würde. Einige Methoden, die ich gesehen habe, verschmelzen alle Unterberichte am Anfang des neuen Repos als Zweige, was bedeutet, dass das Auschecken in der Vergangenheit nicht alle Dateien enthält, die sich in Subrepos befanden. Ich habe auch versucht, alles als Zweige zu importieren, den Kopf in die Vergangenheit zurückzusetzen, zu verschmelzen und wieder aufzusteigen, aber es gibt zu viele Verschmelzungen und viele Konflikte entstehen, sogar mit - Preserve-Merges, also würde ich das lieber vermeiden. Ich konnte auch keine Möglichkeit finden, den Verlauf des mercurial-Subrepository-Updates in Git als Submodul-Update-Verlauf zu replizieren. Hat jemand irgendwelche Ideen? Vielen Dank.Der beste Weg, um Mercurial Repo mit Subrepositories zu git zu migrieren, die Geschichte zu bewahren?
5
A
Antwort
1
Vielleicht eine Sache, die Sie tun könnten (aber ich bin mir nicht sicher, ob das funktionieren würde), ist die Verwendung von hg-git, um zu einem leeren Git-Repository zu pushen.
Alternativ können Sie auch nach git-cinnabar suchen, um die Subrepo-Konvertierung in Submodule zu unterstützen.
1
Nachdem ein ähnliches Problem (ein Mercurial-Projekt mit subrepositories bewegt sich mit einem einheitlichen Layout Git) Ich beabsichtige, einen 2-fach Ansatz zu folgen:
- wandeln Sie Ihre subrepositories in ein einheitliches Projekt-Layout in Mercurial - dies wird hier abgedeckt: Join multiple subrepos into one and preserve history in Mercurial
- jetzt können Sie auf Git migrieren leicht, ich die offizielle Dokumentation die beste Ressource, die mit einer guten Note, wie bis reinigen begehen Geschichte (Autoren): https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git#Mercurial
Ich bin gerade dabei, diese selbst zu testen und wird diese Antwort aktualisieren die Ergebnisse nach ...
ich die Commits über mit hg-git erhalten können, aber das ignoriert vollständig die subrepos. Ich schaute auf Git-Zinnober, aber es hat auch keine Subrepo-Unterstützung. Ich habe bereits das Basis-Repo und alle Subrepos zuvor konvertiert, aber noch keinen guten Weg gefunden, sie zu kombinieren, während ich den historischen Zustand aller Dateien einschließlich Subrepos sehen konnte. – user397114