Frage

im Moment wir Subversion für die Quellcodeverwaltung verwenden, aber alle die Zusammenführung der Arbeit für unsere Veröffentlichungen erfolgt manuell. Wir veröffentlichen mehrmals im Jahr, schafft so einen Zweig für jede Veröffentlichung. Alle Arbeiten aus früheren Zweigen muss sie in späteren machen. Die Arbeiten an später Zweige müssen sie nicht in früheren machen (dies ist in unseren Verträgen). Ich glaube, das als Werbemodell bekannt ist.

Ich denke, das folgende Diagramm zeigt am besten unsere gewünschten Workflow, mit Niederlassungen erstellt werden, wenn Arbeit beginnt auf einer neuen Version, und ändert sich von früheren Zweigen zu späteren fließt.

|
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äre für das Updates von früheren Filialen zu späterer Zusammenführung Fährtenarbeit automatisiert?
  • Wäre es zu schließen / löschen / ignore ein Zweig (in diesem Beispiel Versionszweig ‚a‘) ohne Reintegration in Ordnung sein?
  • Wäre es in Ordnung seines Feature Zweige erstellen aus jedem Release-Zweig und fusionieren würde Arbeit für diese Tracking? (Sie würden folgen die empfohlene erstellen / merge / reintegrate Modell.)

Bearbeiten -. Weitere Informationen hinzufügen

Der Grund, dass das traditionelle Unstable Trunk Modell nicht geeignet sein könnte, wird durch das folgende Diagramm veranschaulicht. Features für jede Version sind nicht unbedingt in der Reihenfolge der Freigabe abgeschlossen (einige Kunden können bestätigen Anforderungen langsam). Wir wollen Änderungen propagieren von früheren Zweigen zu späteren so schnell wie möglich.

    a
    |
    1
    |
   b|\ a
    | \ 
    |  2
    3  |
    |  |
    4  |
  b/|c |
  / 5  |
 |  |  6
 7  |  |
 b  c  a

In diesem Fall möchten wir Merkmal 2 (im Zweig ein abgeschlossenen) im Zweig b, aber da dies ein Kind-zu-Eltern-merge, und daher nicht von Subversion unterstützt, wird es manuell durchgeführt werden. In ähnlicher Weise Merkmal 6 müßte manuell zweimal zusammengefügt werden. Ich gehe davon aus dem ein relativ langsamer und fehleranfälliger Prozess automatisch nachgeführt verschmilzt verglichen werden.

War es hilfreich?

Lösung

Wenn ich Ihre Situation verstehen, gibt es nichts in Ihren Anforderungen, die Dinge so komplex machen, wie Sie scheinen, sie zu machen. Sie sind auch viel zu viel Gewicht auf die Vorzüge der automatischen vs. manuelle Zusammenführung setzen (mehr dazu später). CVS Zweige wäre eine andere Sache gewesen, aber nicht mit der Art und Weise SVN handles „Zweige“ (das heißt, es nicht).

könnten Sie haben eine primäre (instabil oder stabil) Entwicklungslinie und schaffen Zweige für jeden Kunden oder Release (oder beides). Als Merkmale validiert werden, entweder sie fusionierte zurück an die Hauptleitung erhalten so später Zweige jene Änderungen beinhalten können, oder Sie immer fusionieren unidirektional von einem übergeordneten Zweig. Nichts erfordert, dass Sie den Zweig zu schließen und die Zusammenführung ist nicht weniger automatisiert als es Ihr erstes (chaotische) Diagramm Unterstützung gewesen wäre, gegeben Sie mehrere gleichzeitige Entwicklungslinien haben.

Die Anforderung, dass Sie nur vorwärts Klänge verschmelzen wie Sie gerade von der Hauptleitung merge Teilmengen Revisionen müssen, Revisionen nach einer bestimmten Zweigrevisions. Ihre verschmilzt auf diese Weise tun, werden Sie fusionieren Änderungen von beliebigen Zweige an die Hauptleitung zurück, so oft, wie Sie möchten (wie sie mit Ihren Kunden bestätigt werden) lassen und mit Zuversicht angewendet werden kann, dass nur validierte Änderungen angewendet zu werden. Sie können bis automatische Zusammenführung festgelegt, dass die Kopie Revision zu verfolgen (siehe --stop-on-Kopie und bereichsbasierte verschmilzt). Release Zweige dann Sätze von bestätigten Änderungen aufheben, die von einem bestimmten Punkt an aufgetreten sind.

SVN nicht „verfolgen verschmilzt“ sowenig wie es Zweige unterstützt (was es nicht tut, sie sind nur leichte Kopien). Sie sagen, es (oder svnmerge sagt es) im Bereich fusionieren und es gilt, diese Änderungen. Sie können die Wirkung erhalten, dass Sie vertraglich an Unterstützung erforderlich sind, und zwar unabhängig.

Ihre gestellten Fragen zu beantworten:

  • Ich glaube nicht, das Modell, das Sie vorgeschlagen sehr effektiv ist. Im Gegensatz dazu hat es Potenzial für Feature-Tracking-Chaos erhöht, wie Sie Scan-Zweige für Änderungen und fusionieren vorwärts mehrere Male haben. Darüber hinaus wird es zweifellos confuse Entwickler vertraut mit SVN und traditionellere SVN Organisationsstrukturen.

  • Klar. Das sollte ziemlich unabhängig von der Struktur sein, Sie zu wählen. Sie werden zu müssen gehen / wollen unabhängig Überblick über Ihre Revision Punkte halten (vielleicht über einige einfache Skript bei schlechter).

  • Klar. Branchen effektiv haben keine in SVN auf der Serverseite kosten. Die Client-Seite hat eine Gebühr, wenn Sie ganze Wurzel Auscheckvorgänge tun, aber das ist in der Regel eine dumme Sache, unabhängig zu tun. In ähnlicher Weise ist es kein Problem / Löschen eine Verzweigung zu ignorieren. Es ist nur eine weitere Änderung der globalen Revision Hierarchie wie jede andere Kopieren / Löschen / Umbenennen / etc.

  • soll, dass die Arbeit unabhängig von der „Verzweigung“ Organisationsstruktur in Kraft gesetzt. Es klingt wie ein vielleicht wenig ist von Missverständnis darüber, was es bedeutet, ein „Zweig“ in SVN zu sein. Sie sollten einrichten können, was Sie wollen, und führen Sie ‚manuelle‘ verschmilzt mit relativer Leichtigkeit, unabhängig und dann später automatische Zusammenführung nach einigen Kunden Updates einrichten, so dass Sie Ihre merge verstehen kann ein wenig besser Schritte.

Cheers!

Andere Tipps

Sie sagen:

  

Alle Arbeiten aus früheren Zweigen muss   machen es in späteren. Die Arbeiten an später   Zweige müssen nicht in früher machen   diejenigen (dies in unseren Verträgen ist)

Hier, wenn wir Zweige mit Freisetzungen ersetzen (ich bezweifle, Ihre Kunden wissen, oder kümmern sich um „Zweige“), erhalten wir:

  

Alle Arbeiten aus früheren Versionen muss   machen es in späteren. Die Arbeiten an später   Meldungen müssen sie nicht in früher machen   diejenigen (dies in unseren Verträgen ist)

Ich sehe nichts in dieser Anforderung, die sehr komplexe Verzweigungsschema schlagen Sie schlagen - Sie können dies tun, mit dem klassischen „instabilem Stamm“ Stil der Entwicklung. Entweder haben Sie mehr Anforderungen Sie haben uns erzählt, oder Sie sind Over-Engineering.

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