Wann sollten Entwicklungszweige entstehen?

11

Wir verlagern das Team unseres Projekts von der Verwendung eines einzelnen Haupt- / Stammzweigs zu mehreren Entwicklungs- / Arbeitszweigen, die regelmäßig zu Hauptzweigen zusammengeführt werden sollen. Wir stützen unseren neuen Prozess auf diesen Artikel und das TFS-Verzweigungshandbuch (wir verwenden TFS und Visual Studio 2010).

Derzeit arbeiten zwischen 1 und 5 Personen gleichzeitig an dem Projekt. Main muss jederzeit stabil sein, da die Option jederzeit freigegeben werden soll. Wir haben keine festen Sprints - zumindest noch nicht - und veröffentlichen sie derzeit alle 1-2 Wochen.

Zu diesem Zeitpunkt behebt jede Person Fehler in der gesamten Anwendung. In ein paar Wochen werden wir mit der Entwicklung einer neuen großen Komponente für die App beginnen.

Ein Knackpunkt, den wir finden, ist, wann Entwicklungszweige erstellt werden sollten . Abhängig von den Fähigkeiten des Entwicklers werden mehrere User Stories parallel implementiert. Wir haben darüber nachgedacht, für jeden Entwickler einen Zweig zu erstellen, aber das macht keinen Sinn, da bei einer Arbeit immer ein gewisser Bedarf an Zusammenarbeit besteht. Wir können nicht mit einem einzigen Entwicklungszweig auskommen, da wir nach Abschluss anderer Arbeiten mit Main zusammengeführt werden möchten.

Hat jemand eine Anleitung dazu?

Alex Angas
quelle
Gott segne deine Seele dafür, dass sie TFS verwendet und Zweige schafft. In einer früheren Phase in meinem Unternehmen haben sie sich für TFS entschieden, und schließlich hatten alle Entwickler solche Angst vor dem Zusammenführungsprozess, dass aus der Verzweigung ein Programmer Fear Factor wurde.
Jordanien
@ Jordan: Eine nicht völlig unbegründete Angst.
Robert Harvey

Antworten:

9

Ich mag keine willkürlichen Zweige, dh Freds Bugfixes oder Harrys Bugfixes. Ich bin viel zufriedener mit einem (unabhängigen) Feature und einem Zweig, mit dem mehrere Entwickler an einem Feature arbeiten können. Die Funktion kann jedoch erst zusammengeführt werden, wenn sie vollständig ist.

Im Moment benötigen Sie also nur den Zweig "Bugfix". Sobald Sie jedoch mit der Entwicklung beginnen, sollten Sie für jedes wichtige Feature einen Zweig erstellen. Auf diese Weise können sie nach Abschluss zusammengeführt und freigegeben werden, ohne von anderen fehlerhafteren Funktionen abhängig zu sein.

Ich bin mir nicht sicher, wie gut TFS beim Zusammenführen ist, aber ich bin mir sicher, dass Sie es in ein paar Monaten wissen werden :)

mcottle
quelle
Das ist ziemlich nah daran, wie wir es dort machen, wo ich arbeite. Wenn Sie nur sicherstellen, dass Sie religiös von Stamm zu jedem Arbeitszweig verschmelzen, wenn Änderungen in Stamm umgewandelt werden, funktioniert dies recht gut. Schauen Sie sich auch an, wie Sie gleichzeitig automatisierte Builds einrichten. Zu wissen, dass sich jeder Zweig (wie in der Quellcodeverwaltung gespeichert) immer mindestens in einem baubaren Zustand befindet, erleichtert die Arbeit erheblich. Das Zusammenführen mit den Tools von Visual Studio funktioniert gut, bis Sie sehr lange Zeilen mit Änderungen auf beiden Seiten der Zusammenführung haben ...
ein CVn
5

Wir können nicht mit einem einzigen Entwicklungszweig auskommen, da wir uns mit Main zusammenschließen wollen, während andere Arbeiten abgeschlossen sind.

Es hört sich so an, als ob Sie bereits wissen, dass mehrere Entwicklungszweige erstellt werden müssen. Zwei wahrscheinliche Szenarien kommen in den Sinn:

  1. Jeder der fünf Entwickler arbeiten an unabhängigen Teilen des Projekts (Bug-Fixing) - Vergewissern Sie sich, dass ein einzelner Zweig wird für jeden Entwickler erstellt. Dies überträgt jedem Entwickler die Verantwortung und Verantwortung, sicherzustellen, dass seine Änderungen nicht mit der Arbeit anderer in Konflikt stehen. Es ist sehr wahrscheinlich, dass einer Ihrer fünf Entwickler einen Fehler macht. Wenn / Wenn dies der Fall ist, macht es keinen Sinn, dass alle anderen aufgehalten werden.
  2. Entwicklung mehrerer Funktionen - Unabhängig von der Anzahl der Entwickler, die an einer bestimmten Funktion / einem bestimmten Fehler arbeiten, sollten diese getrennt werden. Ein Beispiel dafür ist, dass alle Code-Commits Teil der zu entwickelnden Funktion (en) sind - es ist keine zweite Vermutung erforderlich.
JK
quelle
1

Implizite Arbeitszweige mit DVCS

Wir verwenden Mercurial, daher gibt es den impliziten Arbeitszweig auf der Entwicklerentwicklungsbox. Das Festschreiben erfolgt immer im lokalen Arbeitsbereich. Wenn eine freigebbare Arbeit abgeschlossen ist, wird sie auf den primären Repo-Server übertragen, wo sie automatisch erstellt und getestet wird.

Wir erstellen fast nie explizite Zweige, aber andererseits dauern unsere Sprints nie länger als 1 Woche und die Karten dauern nicht länger als 1-2 Tage.

Sie können auch Zusammenführungsprobleme lindern, indem Sie Arbeiten aus anderen Teilen des Codes oder anderen Projekten einfädeln, damit die Benutzer nicht ständig schwierige Zusammenführungen durchführen müssen.

Dietbuddha
quelle
0

Ich habe sowohl einen Zweig pro Story als auch einen Zweig pro Release verwendet (alle Entwickler checken ihre Storys in dev ein und wenn einer von diesen den Dev-Zweig bricht, ist er für alle kaputt). Ich würde den einen Zweig pro Geschichte sehr empfehlen, wenn Sie Konflikte nicht mögen. Der Entwicklungszweig bleibt für alle Entwickler immer stabil und es gibt keine Wartezeit für einen Entwickler, der an einem Code arbeitet, den ein anderer Entwickler bereits gebrochen hat. Wenn Ihre Geschichte fertig ist, befindet sich Ihr gesamter Code in Ihrer Filiale. Sie werden es mit dev zusammenführen, aber nicht einchecken und testen. Falls Sie Konflikte bekommen, werden Sie es lösen und die Person, mit der Sie in Konflikt stehen, bitten, das Entfernen ihres Codes zu vermeiden. Dann verschmelzen zu dev. Dies hilft allen Entwicklern, reibungslos zu arbeiten. Dies hängt auch von der Größe des Unternehmens ab. Unsere Firma hat 200 Entwickler, die gleichzeitig an einer Codebasis arbeiten. aber separater Zweig für ihre Geschichten. Sobald der Code mit dem Entwicklungszweig zusammengeführt wurde, wird der Story-Zweig sofort gelöscht. Ich hoffe das hilft. Vielen Dank

Sahib Khan
quelle
0

Wenn dies auf git basiert, erstellen Sie einfach einen Zweig für jede Fehlerbehebung, beheben den Fehler in kürzester Zeit, führen den Fehlerbehebungszweig mit dem Entwicklungszweig zusammen und übertragen die Änderung auf den Entwicklungszweig. Das Überprüfen von Pull-Anforderungen und das Zusammenführen sollten die höchste Priorität haben. Je schneller Sie dies erledigen, desto besser sind die Chancen, dass das Zusammenführen keine Probleme verursacht. Nach dem Zusammenführen können diese Zweige gelöscht werden.

gnasher729
quelle