2010-11-29 6 views
6

Ich benutze Mercurial, um ein Kundenprojekt zu entwickeln. Nachdem ich 2 Wochen daran gearbeitet habe, hat der Client nun verlangt, dass ich den gesamten Code in seinem SVN Repo aufbewahre.Ein Mercurial-Repository in Subversion spiegeln?

Ich möchte weiterhin Mercurial für die Entwicklung verwenden, aber um den Kunden glücklich zu machen, exportieren Sie alle Commits (w/Nachrichten) in SVN auch.

Ist das möglich?

Antwort

3

Sie können Mercurial als Client für ihr Subversion-Repository verwenden.

Haben Sie schon hgsubversion ausgecheckt? Dies ermöglicht Ihnen eine vollständige Historie in Mercurial.

Siehe die Details unter: https://www.mercurial-scm.org/wiki/WorkingWithSubversion

Es bietet drei Möglichkeiten, mit Subversion arbeiten. Stellen Sie sicher, dass Sie eine verwenden und nicht mischen.

  1. Mit hgsubversion
  2. Mit MQ
  3. Convert Erweiterung

[Persönliche Erfahrung]

Ich habe festgestellt hgsubversion besser, wie immer kann es Probleme haben, während die suversion Repo eine Umwandlung Mercurial Repo.

# This usually fails for a svn repo with 
# large history or large files in revchanges 

hg clone svn+http://.../svn local-hg 

# If the above has any issues and dies before converting the repo, use hg pull 
hg pull 

Problem: Sie haben eine bereits bestehende Repo.

  1. Ich denke, der beste Weg, einen anderen Mercurial Repo aus dem Subversion-Repo über eine der Methoden zu erstellen wäre.
  2. Ziehen Sie Ihre Änderungssätze in diesen neuen Repo aus dem älteren, alle Änderungen und die Geschichte von den vorherigen
  3. Jetzt
+0

würde also diese Lösung die Änderungen SVN-Repository zu senden, die Sie sind, um bereit erlauben Ich benutze mein * exist * hg Repo, um die Änderungen in ihr SVN Repo zu synchronisieren? Noch besser wäre die Fähigkeit, neue Änderungen von SVN zu ziehen (falls jemand Änderungen auf seiner Seite auch macht). Wäre das machbar? –

+0

@Jon L .: Ja, Sie müssen das SVN Repo mit einer der drei Methoden klonen. Dadurch können Sie Mercurial als Client für Subversion verwenden. Dann müssen Sie diesen neuen Repo mit Ihren Änderungen aus dem älteren Repo über hg pull synchronisieren. Verwenden Sie dann den neuen Repo, um die Änderungen an svn repo zu übertragen. – pyfunc

+0

Nun ... Klonen Sie einen leeren Repo vom Svn Server, dann hg ziehen Sie Ihre Änderungen von Ihrem aktuellen HG Repo. – jkerian