2009-02-24 12 views
5

Ich habe zwei Repositories, die auf separaten Servern leben, nennen sie Repo-1 und Repo-2.SVN Merge Branch von einem Repo in Trunk von anderen Repo

Um beide "Stämme" Start waren gleich:

Repo-1/Stamm == Repo-2/Stamm

Inzwischen Änderungen an-Repo-1/Stamm begangen wurden und ich arbeitete und Änderungen an Repo-2/Trunk vornehmen.

Jetzt muss ich Änderungen von Repo-1/Trunk in Repo-2/Trunk zusammenführen.

Ich dachte, ich würde Repo-1/Stamm in Repo-2/Tags/r1_20090224 kopieren und dann dieses Tag in meine lokale Arbeitskopie von Repo-2/Trunk (d. H c: \ dev \ Repo2-Trunk) zusammenführen.

Irgendwelche Vorschläge, wie man das macht? Ich versuche TortoiseSVN zu verwenden und "Zusammenführen von zwei verschiedenen Bäumen" durchgeführt wird, habe ich die folgenden Einstellungen:

Von: Repo-2/Stamm An: Repo-2/tags/r1_20090224 Arbeitskopie: c: \ dev \ repo2-trunk

Ich habe auch versucht, das "von" und "zu" zu tauschen ... aber kein Glück. Durch eine dieser beiden Einarbeitungsoptionen versuchen, beende mich entweder mit folgendem Ergebnis auf:

  1. Wenn ich von Stamm verschmelzen zu markieren (in meine lokale Kopie von Repo-2/Stamm) Ich meine Stamm Änderungen verlieren und Das Tag ändert sich.

  2. Wenn ich von Tag zu Trunk (in meine lokale Kopie von Repo-2/Trunk) fusioniere, verliere ich meine Tag-Änderungen und behalten meinen Stamm Änderungen.

Irgendwelche Vorschläge dazu?

+1

@codecraig lösen, haben Sie eine Lösung für dieses Problem gefunden? – vladr

Antwort

1

Zuerst die Revision herausfinden, wo die Bäume gleich waren. Dann füge das von dieser Revision zu HEAD des Repo-1-Repository mit deiner Repo-2-Arbeitskopie zusammen.

den Kommandozeilen-Client verwenden, um dies es ist ähnlich, wenn Sie Änderungen zwischen r123 zusammenführen möchten und r456

svn merge http://domain.tld/[email protected] http://domain.tld/[email protected] repos2-workingcopy 
0

SVK könnte in der Lage sein, wenn Sie zu helfen, sich selbst ständig die Verwaltung mehrerer Repositories über die Zeit, die sein müssen, finden ab und zu synchronisiert.

1

Es ist nicht ganz klar, aber Sie müssen von der Basis der beiden Bäume, d. H. Der Punkt, an dem die beiden Stämme die gleichen waren, zusammenführen.

Sander hat mich zu ihm, so Kredit zu ihm, aber hier sind ein paar Tipps:

  1. diese beiden Repositories Holen Sie sich so schnell wie möglich in eine zusammengeschlossen; Subversion war nicht wirklich darauf ausgelegt, so zu funktionieren. Oder alternativ mit einem DVCS wie git oder Basar bewegen oder ...
  2. Wenn Sie mit Subversion-Stick, in herkömmlicher Weise diese Art von Sachen erfolgt mit Zweigen, nicht Tags. Tags werden normalerweise als Markierungspunkte verwendet und nicht an sie gebunden.
1

Wennsvn merge waren Sie über die beiden Standorte/Server zum Scheitern verurteilt:

svn: Unusable URI: it does not refer to this repository 

Dann den folgenden Ansatz verwenden:

  1. den Revisionsstand identifizieren, an denen repo-2 gestartet divergieren von repo-1, sagen wir 123, dann:
  2. svn co http://server1/repo-1/trunk
  3. svn diff -r123:HEAD http://server2/repo-2/trunk >repo2.patches
  4. patch -p0 -i repo2.patches
  5. Bildschirm für alle Konflikte und ihnen
  6. svn ci --message "merged from repo-2"
+0

Also die beiden Repo's teilen keine Geschichte. Zum Beispiel existierte repo-1/trunk für einige Zeit. dann Repo-2/Stamm wurde erstellt, indem Sie Folgendes tun: 1. Exportieren Repo-1/Stamm und gebrannte auf eine CD 2. CD wird auf Repo-2-Server genommen und lediglich "hinzugefügt" als Repo-2/Stamm – codecraig

+0

Hilf mir. Vielen Dank – uriDium

Verwandte Themen