Momentan verwenden wir Subversion für die Quellcodeverwaltung, aber alle Zusammenführungsarbeiten für unsere Releases werden manuell durchgeführt. Wir veröffentlichen mehrmals im Jahr, also erstellen Sie für jede Veröffentlichung einen Zweig. Alle Arbeiten aus früheren Zweigen müssen in spätere verzweigen. Arbeiten an späteren Filialen dürfen nicht in frühere Filialen gehen (dies ist in unseren Verträgen). Ich glaube, das ist bekannt als das Promotionsmodell.Verwenden von Subversion mit dem Promotionsmodell
Ich denke, das folgende Diagramm veranschaulicht am besten unseren angestrebten Arbeitsablauf, wobei Verzweigungen immer dann erstellt werden, wenn die Arbeit an einer neuen Version beginnt, und Änderungen von früheren Verzweigungen zu späteren.
| 1 | |\ | \ | 2 3 | |\| 4 | | |\ 5 | \ | 6 | | | 7 |\|\| | |\| 8 9 |\ | | | \ |\| | 10 x |\| | | |\| | | | a b c d
- Würde dieses Modell arbeitet reibungslos mit Subversion trotz des Mangels an einem sinnvollen Stamm?
- Würde automatisierte Merge-Tracking für die Updates von früheren Zweigen zu späteren arbeiten?
- Wäre es in Ordnung, einen Zweig zu schließen/zu löschen/zu ignorieren (in diesem Beispiel den Zweig 'a' freizugeben), ohne erneut zu integrieren?
- Wäre es in Ordnung, Feature-Zweige aus jedem Release-Zweig zu erstellen, und Tracking-Arbeit für diese zusammenführen? (Sie folgen dem empfohlenen Modell zum Erstellen/Zusammenführen/Reintegrieren.)
Bearbeiten - Weitere Informationen.
Der Grund, warum das traditionelle Instable Trunk-Modell möglicherweise nicht geeignet ist, wird anhand des folgenden Diagramms veranschaulicht. Die Funktionen für jede Version werden nicht unbedingt in der Reihenfolge der Veröffentlichung abgeschlossen (manche Kunden können die Anforderungen nur langsam bestätigen). Wir wollen so schnell wie möglich Änderungen von früheren Zweigen zu späteren verbreiten.
a | 1 | b|\ a | \ | 2 3 | | | 4 | b/|c | /5 | | | 6 7 | | b c a
In diesem Fall wollen wir Merkmal 2 (im Zweig ein abgeschlossenen) im Zweig b, aber da dies ein Kind zu übergeordneter Zusammenführung, und daher nicht von Subversion unterstützt wird, wird es getan werden muss manuell. In ähnlicher Weise müsste Feature 6 zweimal manuell zusammengeführt werden. Ich erwarte, dass dies ein relativ langsamer und fehleranfälliger Prozess im Vergleich zu automatisch nachverfolgten Zusammenführungen ist.
Schöne Antwort. Der Kompromiss, den ich sehen kann, ist, dass in Ihrem Modell die Notwendigkeit besteht, Merges zu wiederholen, zum Beispiel muss ein Bugfix, der an den Trunk gebunden ist, mit allen offenen Release-Zweigen zusammengeführt werden. Wenn einer von ihnen übersehen wird, wird der Bugfix von einem Release verpasst. Mit dem Promotion-Modell scheint es, dass es keine Chance gibt, diese Fixes zu verpassen, daher wäre weniger manuelle Arbeit erforderlich. Es scheint jedoch, dass mein Modell so weit von der Komfortzone von SVN abweicht, dass es Alarmglocken ausschaltet, daher fühle ich mich nicht sicher, unseren Quellcode damit zu riskieren. Ich werde das dem Team geben. Vielen Dank! –