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 inQA
(aber noch nichtmaster
) - Entwickler B ("Jane") erstellt hat
feature/JanesFeature
führte einige Arbeit und jetzt versucht, inQA
- Merge Konflikte jetzt Jane auftreten, werden zu fusionieren, verursacht durch zu
QA
von Rod merge vonfeature/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?
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