Frage

Wenn ein Zweig mit dem Stamm reintegriert wird, ist, dass Zweig effektiv tot?

Können Sie Änderungen an der Verzweigung nach der Wiedereingliederung machen und diejenigen, zurück in den Kofferraum zu einem späteren Zeitpunkt zusammenführen?

War es hilfreich?

Lösung

Sie können es technisch tun, verzweigen Sie ist nicht tot, noch deaktiviert, aber es ist nicht von Ast zu Stamm nach Wiedereingliederung zu fusionieren empfohlen.

Sie können eine vollständige Diskussion über den Grund dafür finden, hier: Subversion Merge reintegrieren

Im Grunde sagt es, dass es möglich ist, die Änderungen wieder an den Stamm zu führen, aber da Sie Reintegration Kräfte von Stamm zu führen vor dem reintegrate Betrieb verzweigen werden Sie Reflektierende / Cyclic Merge werden mit Blick auf die sehr problematisch ist in Subversion 1.5.
Laut dem Artikel, ist es empfehlenswert, Ihren reintegriert Zweig unmittelbar nach Reintegration zu löschen und einen neuen mit den gleichen (oder anders) Namen statt erstellen.

Dies ist ein bekanntes Subversion Verhalten, die in zukünftigen Versionen angesprochen werden (wahrscheinlich in 1.6)


Andere Tipps

Eigentlich benötigen Sie einen --record-only merge vom Stamm in Ihrer Filiale der Revision zu tun, die von der --reintegrate erstellt wurde begehen:

$ cd trunk
$ svn merge --reintegrate ^my-branch 
$ svn commit

Committed revision 555. 
# This revision is ^^^^ important

Und Sie jetzt aufzeichnen

$ cd my-branch
$ svn merge --record-only -c 555 ^trunk 
$ svn commit

Sie sind jetzt glücklich um den Zweig zu halten

Weitere Informationen finden Sie in Kapitel 4. Verzweigen und Zusammenführen, Advanced Merging .

Nachdem Sie von einem Zweig in den Stamm zu reintegrieren, sollten Sie eines von zwei Dingen tun:

  • löschen Ihre Niederlassung . Dies ist die einfachste, aber es macht es schwieriger, den Zweig der Geschichte zu sehen.

  • Sagen Ihre Branche nicht die reintegrate zu verschmelzen verpflichten . Wenn Sie an den Stamm reintegrieren und begehen sie als Revision X, können Sie diesen Befehl auf dem Zweig laufen: svn merge --record-only -c X url-to-trunk. Allerdings sollten Sie dies nicht tun, wenn Sie die Änderungen im Rahmen begehen gemacht, andere als die Zusammenführung selbst. Alle anderen Änderungen wird es nie in Ihrer Branche machen zurück.

Einige Ratschläge um die Änderungen auf verschmelzenden zurück, wenn jemand macht Änderungen an den Zweig mehrmals (vor 1.5): Denken Sie daran, bei der Revision Sie die Zusammenführung tat ! Entweder schreibt die Versionsnummern nach unten irgendwo, oder (was einfacher ist) macht einen Tag . (Sie können es später natürlich herausfinden, aber das ist ein PITA.)

Beispiel:

Sie haben ein Repository Layout wie folgt aus:

/your_project
  /trunk
  /branches
  /tags

Lassen Sie uns sagen, es ist eine Web-Anwendung, und Sie haben geplant, um eine Freigabe zu machen. Sie würden einen Tag erstellen, und von diesen (oder vom Stamm) ein Zweig, in dem Sie tun, um die Fehlerbehebung:

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
  /tags
    /1.0.0

es auf diese Weise tun, können Sie die neuen Funktionen in den Kofferraum integrieren. Alle Fehlerbehebung nur innerhalb des Bugfix-Zweiges passieren würden, und vor jeder Freigabe Sie einen Tag der aktuellen Version machen (jetzt aus dem Bugfix-Zweig).

Nehmen wir an, Sie eine angemessene Menge von Bugfixing haben und diejenigen Server zur Produktion freigegeben, und Sie müssen eine dieser Funktionen verzweifelt im aktuellen Stamm:

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
  /tags
    /1.0.0
    /1.0.1
    /1.0.2

Sie können nun integrieren nur die Änderungen zwischen 1.0.0 und 1.0.2 in Ihrem Kofferraum (vorausgesetzt, Sie in Ihrer Arbeitskopie sind):

svn merge http://rep/your_project/tag/1.0.0 http://rep/your_project/tag/1.0.2 .

Dies ist, was sollten Sie sich erinnern. Sie fusionierte bereits die Änderungen zwischen 1.0.0 und 1.0.2 auf dem Stamm. Nehmen wir an, es mehr Änderungen in der aktuellen Produktions-Release sind:

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
  /tags
    /1.0.0
    /1.0.1
    /1.0.2
    /1.0.3
    /1.0.4

Sie sind nun bereit, die neue Version von Stamm zu lösen, aber die letzten Änderungen der Fehlerbehebung fehlen noch:

svn merge http://rep/your_project/tag/1.0.2 http://rep/your_project/tag/1.0.4 .

Jetzt haben Sie alle Änderungen auf dem Stamm zusammengeführt, und Sie können Ihre Freilassung machen (vergessen Sie nicht, es zu testen zuerst).

/your_project
  /trunk
  /branches
    /1.0.0-bugfixes
    /1.1.0-bugfixes
  /tags
    /1.0.0
    /1.0.1
    /1.0.2
    /1.0.3
    /1.0.4
    /1.1.0

Wie jeder hat schon gesagt, es hier: der Zweig nicht tot ist und verpflichtet sich der Zweig weiterhin ganz gut

.

Manchmal wenn Sie den Zweig nach der Zusammenführung töten wollen. Die einzige zuverlässige Lösung ist, den Zweig zu löschen. Der Nachteil ist, dass dann schwieriger ist es den Zweig wieder zu finden, wenn Sie einen Blick auf sie haben wollte, sagen wir, aus historischen Gründen. Also, lassen viele Menschen der „wichtige“ Zweig herumliegen und eine Vereinbarung von ihnen nicht zu ändern. Ich wünschte, es war ein Weg, um einen Zweig tot / Read-only zu markieren, so dass niemand zu gewährleisten, um es bis auf weiteres begehen kann.

Nein, ist der Zweig noch am Leben, aber in diesem Moment, es ist genau die gleiche wie die Stamm. Wenn Sie auf dem Zweig weiterentwickeln, können Sie mit dem Stamm neu fusionieren später.

Sie können von einem Zweig mit dem Stamm oder Stamm zu einem Zweig zusammenführen, so oft wie Sie wollen.

Zunächst einmal sollten Sie Ihr Subversion-Client und Server aktualisieren, wenn Sie noch Subversion 1.7 oder älter verwenden. Es gibt keinen Grund zu sehr alte Subversion Versionen verwendet werden. Ab 2016 ist die aktuelle Version von Subversion 1.9. SVN 1.8 ist auch jetzt unterstützt und erhält immer noch Fehlerbehebung.

Das Problem Sie fragen wurde in Subversion 1.8 gelöst. Beginnend mit SVN 1.8, hat --reintegrate Option gewesen veraltet . Reintegrieren Merges werden nun durchgeführt automatisch . Siehe Subversion 1.8 Release Notes Eintrag zur Verbesserung bezogen.

Lesen Sie SVNBook 1.8 | Reintegration einen Zweig :

  

Wenn Sie nicht Ihre Niederlassung zu löschen, nachdem es auf die Reintegration   trunk Sie die Synchronisierung durchführen verschmilzt aus dem Kofferraum fortsetzen kann und dann   reintegrieren wieder den Zweig. Wenn Sie dies tun, ist nur die Änderungen an   Ihre Niederlassung nach dem ersten reintegrate ist mit dem Stamm zusammengeführt.

     

...

     

Nur Subversion 1.8 unterstützt diese Wiederverwendung eines Zweiges. Vorhin   Versionen erfordern eine spezielle Handhabung, bevor ein Funktionszweig sein kann   mehr als einmal reintegriert. Siehe die frühere Version dieses Kapitels   für mehr Informationen:    http://svnbook.red -bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

Wenn Sie eine Zusammenführung zu tun, können Sie das Ziel angeben. Sie können die Unterschiede von TreeA und TreeB zu TreeC zusammenführen, wenn Sie möchten. Wie Chris schon sagt, ist Ihre Frage nicht wirklich so viel Sinn machen. Wenn Sie Ihren Zweig in den Stamm zusammenführen, bleibt die Filiale unberührt. Wenn die Verzweigung nicht danach benötigt wird, könnten Sie es löschen.

Sie können auf dem Zweig auf der Entwicklung halten, die Funktion müssen Sie fusionieren-Tracking , die in Subversion 1.5 ist, bedeutet dies, dass zusätzliche verschmilzt aus der Branche nur neue Änderungen beinhalten.

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