Frage

Hier haben wir eine SVN-Repository mit einem Stamm und eine Niederlassung für die Entwicklung auf eine neue Version.

Die Filiale steht kurz vor dem zur Veröffentlichung bereit jetzt so habe ich beschlossen, den Zweig zurück auf den Stamm reintegrieren. Offensichtlich gab es einige Konflikte. Einschließlich ziemlich viel Baum Konflikte von Dateien, die im Kofferraum gelöscht worden war.

Ich nahm mir vor, alle Konflikte glücklich genug und den Stamm gebunden.

Das Problem ist, dass wir dann noch ein paar kleinere Änderungen an der Verzweigung gemacht, also ging ich den Zweig wieder reintegrieren und alle die gleichen Baum Konflikte aufgetreten. sie zu lösen ist das kein Problem, aber es gibt eine ganze Menge und es dauert eine Weile, um zu überprüfen und zu lösen, sie alle manuell und ich will nicht durch die gleiche Auflösung Prozesse gehen müssen jedes Mal, wenn ich eine Änderung vornehmen und reintegrieren. Ich hatte SVN erwartet zu erkennen, dass der Zweig bereits einmal reintegriert worden war und nur von dem Punkt verschmilzt die letzte Reintegration stattgefunden hatte.

Wenn ich die Revisionsgraphen öffnen, zeigt es den Stamm und den Punkt, dass der Zweig abgespalten wurde, aber es zeigt nicht die Zusammenführung. Sollte es?

Server: WinServer2003 (R2sp2), VisualSVNServer (1.7.2). Auftraggeber:. WindowsXP (sp3), ich habe mit TortoiseSVN (1.6.5) um all dies zu tun, aber ich habe auch den Kommandozeilen-Client installiert

ich tun, um die Zusammenführung, indem sie sicher, dass ich den Koffer auf dem neuesten Stand haben auf und TortoiseSVN mit einer Zusammenführung zu tun, und ich wählen Sie „einen Zweig Reintegrate“, wenn sie mit der Option Dialog angezeigt. Ich habe die merge Tiefe auf „Arbeitskopie“

Am Umgang ich dieses Szenario falsch? Soll ich etwas anders machen?

(Vielleicht haben wir unser Repository Layout falsch. Wir aus dem Stamm verzweigt, machten alle Änderungen für die neue Version in der Branche, jetzt die Freigabe ist aufgrund uns den Zweig zurück auf den Stamm verschmelzen. Vielleicht ist dies die falscher Ansatz, ich habe einige Leute darüber gelesen andersrum tun, machen alle Änderungen in dem Kofferraum, und den Zweig nur, wenn Sie fast zur Veröffentlichung bereit sind und der Zweig wird die unterstützte Release-Version)

War es hilfreich?

Lösung

Hier finden Sie ab Ende dieses Kapitel des SVN Buch:

  

In Subversion 1.5, sobald ein --reintegrate merge von Ast zu Stamm durchgeführt wird, ist der Zweig nicht mehr verwendbar ist für die weitere Arbeit. Es ist nicht in der Lage richtig zu neuer Stamm Änderungen aufnehmen, noch kann es richtig wieder mit dem Stamm reintegriert werden. Aus diesem Grunde, wenn Sie auf Ihrem Funktionszweig weiter arbeiten wollen, empfehlen wir, es zu zerstören und dann aus dem Kofferraum wieder zu schaffen

Andere Tipps

In dieser Situation würde ich nicht Code aus dem Zweig mit dem Stamm zusammenführen, bis Sie die Entwicklung abgeschlossen haben.

I würde fusioniert von Stamm verzweigen Ihre Branche, um sicherzustellen, auf dem neuesten Stand mit allen möglichen Korrekturen an den Stamm aufgebracht ist. Führen Sie diese Aktivität in regelmäßigen Abständen Ihre dev Zweig enthält alle Updates zu gewährleisten. Dann an dem Punkt, an dem die Entwicklung der Live-Veröffentlichung wird tun, um die Zusammenführung von Ast zu Stamm als eine einmaligen Aktivität.

Meine Antwort macht ein paar Annahmen, einschließlich:

  • Sie haben Live-Stamm und dev Zweige
  • Sie haben nur eine Live Version (das heißt nicht beibehalten Vermächtnis Versionen)

Ich hoffe, das hilft.

Es ist nun tatsächlich möglich, wiederholte bidirektionale Verschmelzung zu tun

Ein Wort der Vorsicht. Diese Antwort wird erklärt, wie es soll getan werden, aber wenn Sie jeden Schritt verpassen Sie bereuen. Zum Beispiel muss die --reintegrate merge völlig trivial sein (alle Unterschiede bereits in der Verzweigung aufgelöst), da sonst werden Sie lautlos verpassen die Änderungen bekommen Sie in dem --reintegrate merge Schritt tun, wenn Sie in Ihrer Branche weiter arbeiten. Die Alternative besteht darin, anstatt zu löschen und neu erstellen Zweig jedes Mal nach --reintegrate.


In mindestens SVN-Version 1.6 und später können Sie bidirektionale Verschmelzung wiederholt haben. Sie können das Kind Zweig so oft von dem ‚Haupt‘ Zweig zusammenführen, wie Sie mit nur svn fusionieren wollen, aber jedes Mal, wenn Sie den Zweig zurück zur Haupt verschmelzen, haben Sie die Möglichkeit geben,

--reintegrate wie in den anderen Antworten erwähnt.

Was Sie auch tun müssen, ist Ihre Branche zu sagen, dass Sie es integriert in einem zweiten Schritt manuell (mit dem Zweig ausgecheckt und aktualisiert) mit dem Befehl

svn merge --record-only -c 391 ^/calc/trunk

391 stellt hier die Zusammenführung verpflichten Nummer aus dem --reintegrate Zweig begehen Sie haben gerade in calc / trunk.

Wenn Sie es nicht verpassen, kann es immer noch funktionieren, oder Sie müssen fusionieren erneut lösen fusionieren Konflikte bereits nächstes Mal gelöst. Nach dem Rekord nur Schritt Ihre Zweige für die weitere Arbeit oder Verschmelzung bereit sind. Es ist albern (vor allem, wenn Sie von Git wie ich die Qual, wo die Dinge einfach funktionieren), aber wenn Sie es tun, nach diesem Ritual es funktioniert, und beide Zweige sind immer offen für neue Commits.


Das Ganze ist im SVN Buch dokumentiert unter reintegrieren zweimal

  

Diese merge verwendet die Rosinenpickerei merge Syntax, die eingeführt wurde,   im Abschnitt „Die Rosinen herauszupicken“ genannt. Weiter mit dem Lauf   Beispiel aus dem Abschnitt „ein Zweig Reintegration“, wo   Revision X war Revision 391:

$ cd my-calc-branch $ svn update Updating '.': Updated to revision
393. $ svn merge --record-only -c 391 ^/calc/trunk
--- Recording mergeinfo for merge of r391 into '.':  U   . $ svn commit -m "Block revision 391 from being merged into my-calc-branch."
 Sending        .

 Committed revision 394.
  

Jetzt ist Ihr Zweig ist bereit, wieder den Stamm aufzusaugen Änderungen von. Nach einer erneuten Synchronisierung Ihrer Niederlassung auf den Stamm, können Sie sogar den Zweig ein zweites Mal reintegrieren. Falls erforderlich, können Sie ein anderes tun rekord nur verschmelzen die Niederlassung am Leben zu halten. Spülen und wiederholen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top