Hindernisse für die Verwendung von Git Flow in Subversion

10

Mein Team bei der Arbeit startet ein neues Projekt und verwendet Subversion als unser VCS (Sie können dieses Set für die Zwecke dieser Frage in Stein gemeißelt betrachten). Wir befinden uns noch in der Anfangsphase des Projekts und versuchen, uns auf ein Verzweigungsmodell zu einigen. Unser vorheriges Projekt basierte auf einem nicht standardmäßigen Versionsmodell, das zu Problemen bei der Verwaltung von Hotfixes und Patches für vorhandene Releases führte.

Ich habe festgestellt, dass verschiedene Verzweigungsmodelle ziemlich kompliziert sind, aber ein Modell, das ich ziemlich klar verstehe, ist Git Flow . Ich bin gespannt, wie schwer / unerwünscht es wäre, eine Variation davon in Subversion zu implementieren. Offensichtlich würde es einen Unterschied in Bezug auf die Mitarbeiter in Zweigstellen geben. Die Feature-Zweige müssten zentralisiert und nicht auf lokale Repositorys beschränkt werden, aber die anderen Konzepte des Modells sollten nach meinem Verständnis in Subversion reproduzierbar sein.

Was wären die Nachteile oder Herausforderungen dieses Ansatzes? Was ich gehört habe ist, dass in SVN "Zusammenführen teuer ist" im Vergleich zu Git. Ich bin mir jedoch nicht ganz sicher, was dies in der Praxis bedeutet oder wie sich dies auf unsere Fähigkeit auswirken würde, ein Git-Flow-ähnliches Verzweigungsmodell zu verwenden.

Was wäre das größte Problem bei diesem Ansatz? Gibt es einen ähnlich klaren Ansatz, der in Subversion natürlicher ist?

Ben McCormick
quelle

Antworten:

12

Gitflow basiert auf den Best Practices für die Versionierung und Verzweigung von Quellcode. Ein sehr guter Artikel dazu ist Advanced SCM Branching Strategies

Der Punkt, den Vance in dem verlinkten Artikel hervorhebt, ist, dass verschiedene Zweige unterschiedliche Rollen haben . Er identifiziert die Rollen von:

  1. Hauptleitung (alle Filialen von hier)
  2. Entwicklung (wo Entwicklungsarbeit geleistet wird)
  3. Wartung (wo Wartungsarbeiten durchgeführt werden)
  4. Akkumulation (Dinge zusammenbringen, um die Veröffentlichung vorzubereiten)
  5. Verpackung (Verpackung des Builds für die Veröffentlichung)

In gitflow sind dies:

  1. Entwickeln
  2. Feature-Zweige
  3. Hotfix-Zweige
  4. Zweige freigeben
  5. Meister

Der Artikel über Verzweigungen wurde unter Berücksichtigung von Perforce geschrieben. Perforce ist ein zentrales VCS, ähnlich wie svn. Die von ihm beschriebenen Verzweigungsmuster sind perfekt auf svn abgestimmt.

Der Schlüssel zu erkennen ist, dass es nicht darum geht, wie gitflow auf svn portiert wird, sondern wie dieselben grundlegenden Konzepte der Verzweigung und die Rollen von Verzweigungen auf verschiedene VCS-Strukturen angewendet werden.

Ich würde dringend empfehlen, den Artikel zu lesen, ich kann ihm nicht viel Ehre machen. Die Art und Weise, wie die Dinge dort beschrieben werden, basiert auf einer Trunk / Mainline-Build-Philosophie, der Sie leicht zuordnen können.


quelle
1
Zurück zu den Ideen, die das Design von gitflow leiten, ist eine clevere Erweiterung der ursprünglichen Frage!
user40989
@ user40989 Ich bin mir nicht sicher, ob Vincent Driessen (nvie) den Artikel gelesen hat oder nicht, der dieses Konzept der Verzweigung hervorgebracht hat, oder ob er dies selbst wiederentdeckt hat. In beiden Fällen macht es das Erkennen der erforderlichen Rollen für einen Arbeitsablauf durch die Versionskontrolle leicht, die Ähnlichkeiten zwischen den Ansätzen und Best Practices zu erkennen.