2016-08-25 3 views
5

Wir übernehmen eine neue Verzweigungsrichtlinie, um mit Agile zu arbeiten und uns auf Feature-by-Feature-Basis freigeben zu können, wobei wir eine master-Verzweigung und eine QA-Verzweigung als fortwährende Verzweigungen haben. Nightly Builds basieren auf QA und die Versionen werden von master kommen. Entwickler erstellen für jede Story einen Feature-Zweig. Alle Merkmalverzweigungen müssen von master abgezweigt werden und dann zu QA zum Testen zusammengeführt werden, gefolgt von einer Zusammenführung des Merkmalverzweigs in master für die nachfolgende Freigabe. Das ist in Ordnung, bis das folgende Szenario:Git-Merge-Strategie für Agile Branching-Workflow

  • Entwickler A ("Rod") hat feature/RodsFeature erstellt, einige Arbeiten durchgeführt und fusionierte in QA (aber noch nicht master)
  • Entwickler B ("Jane") erstellt hat feature/JanesFeature führte einige Arbeit und jetzt versucht, in QA
  • Merge Konflikte jetzt Jane auftreten, werden zu fusionieren, verursacht durch zu QA von Rod merge von feature/RodsFeature eingeführten Änderungen

Wenn Jane QA umgehen und feature/JanesFeature in master verschmelzen würde, würde es keine Konflikte geben, da feature/RodsFeature noch nicht in master ist. Jane muss jedoch aus offensichtlichen Gründen in QA zusammenführen. Um den Konflikt zu lösen, konnte sie Rods Änderungen in ihren Feature-Zweig integrieren, die Konflikte lösen und dann die Zusammenführung durchführen - mit der unerwünschten Konsequenz, dass sobald sie ihren Feature-Zweig in master zusammenführt, Rods Änderungen eingeführt werden stehen noch ausstehende QA-Tests.

So - eine Problemumgehung wäre Konflikte direkt im QA Zweig zu lösen, Jane Feature-Zweig intakt für die spätere Zusammenführung in master. Dies führt jedoch zu einem Bruch der Codeüberprüfungsrichtlinien, da Merges von einem Peer genehmigt werden müssen. Dadurch wurde sie lokal in QA zusammengeführt und ohne Pull-Anforderung oder Peer-Review an die Remotedatenbank verschoben.

Was würde in dieser Situation als "beste Praxis" angesehen werden?

Antwort

3

Check out Git Flow. Es kommt dem am nächsten, was Sie erreichen wollen.

Entwickler verzweigen ihren Feature-Zweig vom qa-Zweig (in Git Flow develop genannt). Vervollständigen Sie ihre Funktion (nehmen Sie regelmäßig den letzten Status der Qualitätssicherung zur Kenntnis) und führen Sie sie, wann immer möglich, wieder auf develop zurück (eine Funktion ist abgeschlossen oder befindet sich in einem stabilen Status oder ist deaktiviert).

Was Sie als qa Zweig ausführen würden wahrscheinlich die release Zweig in Gitflow.

Alle Änderungen am Master werden sofort zurück auf develop zusammengeführt. auch

Siehe:

+0

wir ein Problem mit Funktion 1 und Funktion 2 hatten in QA Zweig zusammengeführt werden, sondern verfügen über 1 abgelehnt und verfügt über 2 zur sofortigen Veröffentlichung geplant werden. Dieses Problem wurde behoben, indem der Arbeitsablauf so geändert wurde, dass Funktionen nicht in den QA/Entwicklungszweig integriert wurden, bevor sie akzeptiert wurden! – Warpzit

2

tl; dr: fügen Sie eine dev-Verzweigung hinzu, um Pull-Anforderungen bestimmter 'Task'-Verzweigungen mit den Änderungen für Codeüberprüfungen auszuführen.

In einigen Teamprojekten war ich auch auf einer dev Verzweigung, um "Pull Requests" auf Github oder einem Repository-Manager zu machen, wo ein Senior-Entwickler nachschaut, was sich geändert hat und sieht, ob diese spezielle Änderung gut geschrieben ist etc.

In Online Repo Host-Umgebungen wie Github, haben sie explizit die Änderungen mit dem ursprünglichen Zweig etc. angezeigt. Nach dem Blick auf einen Zweig, der Senior-Entwickler dann verschiebt es in den Dev-Zweig, um schließlich gehostet werden in einer Qa-Umgebung, die am Ende des Sprints zu sehen ist.

Verwandte Themen