Problem
Jestem w projekcie oprogramowania, który ma około 10 programistów, udostępniamy kod źródłowy za pośrednictwem Mercurial. Posiadamy dział rozwoju i produkcji na wydanie. Wielokrotnie w trakcie projektu mieliśmy kod źródłowy z jednej gałęzi, tj. V1 wchodzącej do łatek i gałęzi serwisowych dla wcześniejszych wydań oprogramowania, tj. V2.
Powoduje to albo czas poświęcony na wycofanie niewłaściwego zatwierdzenia, albo niewłaściwy kod (prawdopodobnie nie-QAd) osiągający i wdrażany w niewłaściwej gałęzi, jeśli nie zauważymy, że kod znalazł się w niewłaściwej gałęzi.
Nasz projekt / metoda łączenia i łączenia
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
W związku z tym będziemy pracować nad gałęzią rozwoju wersji, dopóki nie zostanie uznana za gotową , należy ją rozgałęzić dla pojedynczego oddziału testującego / UAT / produkcyjnego, w którym wykonywane są wszystkie wydania i konserwacja. Tagi służą do budowania wydań tej gałęzi. Podczas testowania wersji 1 zostanie utworzona gałąź dla wersji 2, a programiści zaczną pracować nad nowymi funkcjami.
Często zdarza się, że programista podejmuje pracę z powodu rozgałęzienia v2-dev w v1-dev lub v1-prod, albo co gorsza, scala v2-dev w v1-prod (lub podobne błędy).
Mówimy większości programistów, aby nie uzyskiwali dostępu do gałęzi -prod , jednak kod wciąż się do nich wkrada. Grupa starszych programistów „opiekuje się” gałęzią -prod.
Należy zauważyć, że chociaż wersja v2 dopiero zaczęła opracowywać, nadal mogą pojawiać się całkiem spore łatki do wersji 1, aby naprawić problemy. Tj. V1 może nie tylko otrzymywać dziwną małą łatkę.
Co próbowaliśmy do tej pory
- Posiadanie osobnego oddziału-produktu z strażnikami. Oddział -produkt powinien wywoływać ostrzeżenia poprzez swoją nazwę, a większość programistów nie musi nigdy być w tej gałęzi. To tak naprawdę nie zmniejszyło problemu.
- Podniesiono świadomość tego problemu wśród programistów, aby zwiększyć ich czujność. Ponownie nie było to bardzo udane.
Widzę możliwe powody, dla których programiści wybierają niewłaściwy oddział
- Zbyt skomplikowany projekt gałęzi
- Aktywny rozwój w wielu gałęziach równolegle. (Projekt wykazuje objawy używania modelu lawinowego ).
- Programiści nie rozumieją DVCS wystarczająco dobrze
Pytania, które przeczytałem, były dość istotne
Przeczytałem to pytanie o tym, czy nie popełniłem niewłaściwej gałęzi, i uważam, że odpowiedzi dotyczące wskazówek wizualnych mogą być pomocne. Nie jestem jednak do końca przekonany, że napotykane przez nas problemy nie są objawami bardziej fundamentalnego problemu.
Dzięki wskazówkom wizualnym możemy łatwo włączyć je do linii poleceń, jednak około połowa zespołu używa zaćmień, co do których nie jestem pewien, jak zastosować wskazówki wizualne.
Pytanie
Jakich metod, w postaci oprogramowania, zarządzania projektami lub zarządzania, możemy użyć do ograniczenia (najlepiej zatrzymania) zatwierdzeń do niewłaściwej gałęzi, zajmując nam czas lub usuwając wdrożony kod?
Doceniony zostanie konkretny komentarz na temat przyczyn, które moim zdaniem mogą wnieść swój wkład, jak opisano powyżej, ale nie powinno to ograniczać twojej odpowiedzi.