Das Problem
Ich arbeite an einem Software-Projekt mit ungefähr 10 Entwicklern. Wir teilen den Quellcode über Mercurial. Wir haben eine Entwicklungs- und Produktionsniederlassung pro Release. Im Verlauf des Projekts wurde wiederholt Quellcode aus einem Zweig (v1) in Patch- und Wartungszweige für frühere Softwareversionen (v2) verschoben.
Dies hat zur Folge, dass entweder die Zeit für das Zurücksetzen des falschen Commits aufgewendet wurde oder dass falscher (möglicherweise nicht von QAd stammender) Code in den falschen Zweig gelangt und dort bereitgestellt wird, wenn wir nicht feststellen, dass der Code in den falschen Zweig gelangt ist.
Unsere Branche und Merge Design / Methode
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
Daher werden wir an einem Release-Entwicklungszweig arbeiten, bis er als bereit erachtet wird. Verzweigen Sie ihn für einen einzelnen Test- / UAT- / Produktionszweig, in dem alle Releases und Wartungen durchgeführt werden. Tags werden verwendet, um Releases dieses Zweigs zu erstellen. Während v1 getestet wird, wurde eine Verzweigung für v2 erstellt, und die Entwickler werden mit der Arbeit an neuen Funktionen beginnen.
Was dazu neigt, ist, dass ein Entwickler aufgrund der Verzweigung von v2-dev zu v1-dev oder v1-prod Arbeit leistet, oder schlimmer noch, sie führen v2-dev zu v1-prod zusammen (oder ähnliche solche Fehler).
Wir raten den meisten Entwicklern, nicht auf die -prod- Zweige zuzugreifen , der Code schleicht sich jedoch immer noch ein. Eine Gruppe von erfahreneren Entwicklern kümmert sich um den -prod-Zweig.
Es sollte beachtet werden, dass v2 zwar gerade mit der Entwicklung begonnen hat, es jedoch noch einige ziemlich umfangreiche Patches in v1 geben kann, um Probleme zu beheben. Dh v1 bekommt vielleicht nicht nur den einen oder anderen kleinen Patch.
Was wir bisher versucht haben
- Mit einem separaten Zweig mit Gatekeepern. Ein -prod-Zweig sollte Warnungen über seinen Namen auslösen, und die meisten Entwickler müssen sich niemals in diesem Zweig befinden. Dies hat das Problem nicht wirklich verringert.
- Sensibilisierung der Entwickler für dieses Problem, um sie wachsamer zu machen. Auch dies war nicht sehr erfolgreich.
Mögliche Gründe, die ich für Entwickler sehe, die sich für den falschen Zweig entscheiden
- Zweigentwurf zu komplex
- Parallele aktive Entwicklung in mehreren Branchen. (Das Projekt zeigt Symptome der Verwendung des Lawinenmodells .)
- Entwickler verstehen das DVCS nicht gut genug
Fragen, die ich gelesen habe, waren etwas relevant
Ich habe diese Frage gelesen , weil ich mich nicht auf den falschen Zweig festgelegt habe, und ich bin der Meinung, dass die Antworten zu visuellen Hinweisen hilfreich sein können. Ich bin jedoch nicht ganz davon überzeugt, dass die Probleme, die wir haben, keine Symptome eines grundlegenderen Problems sind.
Mit den visuellen Hinweisen können wir sie problemlos in die Befehlszeile integrieren, jedoch verwendet etwa die Hälfte des Teams Eclipse. Ich bin nicht sicher, wie visuelle Hinweise eingefügt werden sollen.
Frage
Mit welchen Methoden, in Form von Software, Projektmanagement oder Governance, können wir die Anzahl der Commits für den falschen Zweig reduzieren (im Idealfall stoppen), was unsere Zeit in Anspruch nimmt oder unseren implementierten Code verschmutzt?
Ein spezieller Kommentar zu den Gründen, von denen ich glaube, dass sie dazu beitragen, wie oben dargelegt, wäre willkommen, aber dies sollte Ihre Antwort nicht einschränken.