2009-12-14 24 views
23

Aufgrund des Mangels an Mercurial-Unterstützung in verschiedenen Tools und der Unterdrückung der Verwaltung wurde es notwendig, mehrere Test-Mercurial-Repositorys in Subversion zu konvertieren, um dem Unternehmensstandard zu entsprechen.Konvertierung von Mercurial in Subversion

Gibt es irgendwelche Tools oder Vorschläge, wie Sie dies ohne Verlust der Revisionsgeschichte und dergleichen erreichen können?

+0

Für die nächsten wonderer der Mercurial fremd und sehnen für Subversion findet, können Sie diesen Link hilfreich: [Subversion Umerziehung] (http://hginit.com/00.html) – noelicus

+0

Für die nächsten Wanderer, die Mercurial abstoßend finden, bitte "re-educate" sich nicht über den obigen Link, es sei denn, Sie glauben, dass ein Verkäufer, der Mercurial-basierte Tools verkauft, eine unvoreingenommene Meinung hat. Vielleicht solltest du Vorlieben und Meinungen über VCS vs DVCS-Tools respektieren. Viele Menschen haben beides versucht - oder waren dazu gezwungen - und haben absolut gültige Meinungen darüber, was sie bevorzugen und warum. – JoGusto

Antwort

28

Die Convert-Erweiterung, die mit Mercurial geliefert wird, kann Mercurial als src und Subversion als Ziel verwenden.

hg convert --dest-type svn hgreponame svnreponame 

Stellen Sie sicher, es in Ihrer .hgrc-Datei zu aktivieren.

Wenn Sie weiterhin mercurial verwenden möchten, können Sie mit der hgsubversion bidirektionale Synchronisierung durchführen.

+1

dies schlägt nach 2 Revisionen mit 'abort : svn exited mit Status 256' –

+1

Ich habe das svn-dest-Zeug nicht benutzt, aber ich habe gesehen, dass es sich in der letzten Zeit auf der Mailing-Liste geändert hat. Stellen Sie sicher, dass Sie das neueste Quecksilber (1.4.1) und die neuesten swig Bindungen für die neuesten SVN. Dann benutze eine Kombination von --debug --traceback und vielleicht sogar strace. Es kann notwendig sein, mit einer vollständig linearen mercurial Geschichte zu beginnen, die mit 'Hg-Klon http: // src -r tip' leicht erreicht wird. Ich glaube, ich habe gehört, dass das Repo-Format von svn nicht dafür geeignet ist, mercuriale Merge-Revisionen sauber zu speichern. –

+4

Nur eine weitere Anmerkung zu diesem, Abtreibungen waren aufgrund von Dateisystem-Mängeln einer Art (ntfs3g). Versuche es einfach weiter. –

3

Tailor sollte in der Lage zu tun, was Sie wollen.

+0

Linkfehler: http://progetti.arstecnica.it/ Server nicht gefunden. – ChrisFreeman

+0

@ChrisFreeman: Leider scheint arsteznica.it ausgefallen zu sein. Debian hat immer noch die Dateien in seiner Paketdatenbank: http://http.debian.net/debian/pool/main/t/tailor/tailor_0.9.35+darcs20090615.orig.tar.gz –

8

Ry4ans Antwort oben macht den Trick genau; einige detaillierte Anweisungen für jedermann (wie mich), die Probleme haben ist:

  1. Tun Sie sich selbst einen Gefallen und Sie nicht versuchen, dies auf Windows. Sie müssen eine sehr spezifische Version von SVN installieren, und selbst dann werden bestimmte Dinge mit verschiedenen Fehlermeldungen fehlschlagen. Meine Lösung war, eine saubere AWS-Instanz zu booten, yum-die neusten Versionen von mercurial und svn darauf zu bekommen, den HG-Repo zu klonen und die Konvertierung dort auszuführen.

  2. Fügen Sie diese auf Ihre .hgrc Datei die convert Erweiterung zu aktivieren:

    [extensions] 
    hgext.convert= 
    
  3. Führen Sie diesen Befehl ein:

    hg convert --dest-type svn <hg_directory> <directory_for_svn_output> 
    
  4. Sie möglicherweise die folgende Fehlermeldung erhalten:

    abort: svn exited with status 256 
    

    Gib nicht auf! Führen Sie denselben Befehl erneut aus und es wird dort fortgesetzt, wo es aufgehört hat.

    Wenn Sie weiterhin Probleme bekommen, fügen Sie --debug --traceback zur Befehlszeile hinzu, um mehr Details darüber zu erhalten, was schief gelaufen ist.

+0

Ähm, was hat Windows damit zu tun? –

+0

@BillyONeal Es war zu lang, also erinnere ich mich nicht genau, aber unter Windows ist meine Konvertierung aufgrund einiger Syntaxprobleme fehlgeschlagen (ich denke, es lag an einem Problem mit der Formatierung von Befehlszeilenparametern für svn.exe). Wenn Sie diese Fehler bei Google suchen, werden Sie feststellen, dass Sie eine sehr spezielle SVN-Version benötigen, damit sie funktioniert. Nachdem ich einige Zeit daran herumgebastelt hatte, entschied ich mich dazu, es einfach auf AWS zu machen und es funktionierte das erste Mal. – nitwit

+0

Ich konnte das nicht auf Windows und Linux verwalten. Unter Linux sind die Fehlermeldungen mike @ mike-virtual-machine ~/repos $ hg konvertieren --dest-type svn ~/Horizon ~/HorizonToSvn initialisieren svn Arbeitskopie 'HorizonToSvn-wc' Scan-Quelle ... Sortierung ... umwandeln ... 6655 baseline 30357 abort: svn beendet mit status 32512 mike @ mike-virtual-machine ~/repos $ – mikelong

Verwandte Themen