2012-04-11 7 views
1

Ich habe eine interessante Source Control Workflow-Problem.Mercurial und SVN Workflow-Problem

Meine Firma arbeitet mit einem Drittanbieter zusammen, der SVN verwendet, um ein Produkt zu verfolgen, das gerade aktiv entwickelt wird. Wir werden dieses Repository in den nächsten Monaten übernehmen, aber wir möchten mit der Arbeit an anderen Funktionen innerhalb des Projekts beginnen. Aus offensichtlichen Gründen hat unser Vertragspartner uns den Zugang verweigert, aber zugestimmt, den Zugang zu seinem SVN-Repo zu lesen.

Für unsere Windows-Entwicklungsmaschinen verwenden wir ein Merkur-Repository. Ich möchte irgendwie den SVN Repo zu einem neuen HG Repo kopieren und regelmäßig Änderungen verschmelzen SVN in HG zusammengeführt. Mit anderen Worten, wir arbeiten Seite an Seite in zwei verschiedenen Repositories.

Hat jemand so etwas getan? Irgendwelche Vorschläge zu einem Ansatz?

Danke.

+0

http://mercurial.selenic.com/wiki/HgSubversion –

+0

Danke. Ich habe mich tatsächlich dazu entschlossen, erst einmal manuell zu fusionieren. Ich habe das neue Repo in HG erstellt, und ich werde regelmäßig manuell Dateien von Svn kopieren. Ich würde gerne von jemand anderem hören, wenn sie Vorschläge haben. – feathj

Antwort

2

Ich kann mir vorstellen, dass jeder Prozess nur dann am schlimmsten wird, wenn sich Ihre Änderungen in mercurial erhöhen und sich weiter von den Änderungen im SVN entfernen, die niemals mit Ihren merkwürdigen Änderungen einhergehen. Ich wäre jedoch gespannt, wie sich mercurial mit dieser Komplexität verbindet. Ich würde es auf diese Weise nähern:

1) Export aus dem SVN Ihre hg Repo, diesen /SvnExportCleanHG Clone läßt erstellen rufen, dass in eine Arbeitskopie, in der alle neuen Funktionen von Ihrem Unternehmen gehen: /WorkingHG

2) Wenn Sie neue Änderungen von SVN ziehen möchten, führen Sie ein Svn-Update von /SvnExportCleanHG aus und übergeben Sie dies dem sauberen Repo. Dies wird jetzt 2 Revisionen haben, original und aktuell von svn. Aus /WorkingHG einen hg pull /SvnExportCleanHG ausführen und alle unvermeidlichen Änderungen zusammenführen. Übergeben Sie das dann dem WorkingHG-Repo.

Jetzt haben Sie versucht, mercurials Mergen zu verwenden, die besten Ihrer Fähigkeit, und Sie haben immer noch eine saubere /SvnExportCleanHG, die Sie die nächste Änderung von SVN ohne irgendwelche Konflikte ziehen können.

Immer wenn Sie von Svn wieder updaten möchten, tun Sie Schritt 2. Aktualisierung von Svn und Commit in der sauberen Repo wird nie einen Konflikt, weil es nur svn widerspiegelt, aber es immer Ihnen erlauben, ziehen und von Ihrer Arbeitskopie zusammenführen HG, weil sie gleich sind.

Es hängt von der Höhe Ihrer Änderungen und den Änderungen von SVN ab, wenn Sie mercurial merging viel kaufen. Wenn Sie in verschiedenen Baselines des Codes bleiben, ist dies ein großartiger Workflow und Sie sparen viel manuellen Aufwand. Wenn Sie sich stark überlappen, funktioniert dies zwar immer noch, aber es vereinfacht Ihren Workflow und löst viele Probleme beim Zusammenführen.

Ich würde wirklich interessiert sein, wie das funktioniert, wenn Sie es jemals versuchen.

+0

Das macht so viel Sinn.Ich wünschte, ich hätte an diesen Ansatz gedacht, als ich das erste Mal auf das Problem stieß! Obwohl es für mich kein Thema mehr ist, bin ich froh, dass Sie das für die Nachwelt und meine Vernunft beantwortet haben. – feathj

0

SVN + Mercurial gut funktionieren, bis Sie beginnen zu verschmelzen. Aber warum brauchen Sie Mercurial, wenn Sie nicht zusammenführen? Wir hatten fast solche Situation. Wir haben svn copy zu mercurial mit hgsubversion extension gemacht und alle aktiven Entwicklungen sind jetzt im mercurial. dann kopieren wir von Zeit zu Zeit mercurial Arbeitsverzeichnis nach svn ohne Historie und alle Zweige.