Podczas migracji z czegoś do czegoś innego, musisz zdefiniować tylko dwie rzeczy:
- Jaki jest twój cel
- Jak się tam dostać (plan migracji)
Pierwsza część jest, niestety, często pomijane lub sposób zbyt ogólnikowy. Nie możesz po prostu powiedzieć, że masz bałagan i chcesz go uporządkować. Co to by znaczyło? Każdy będzie miał inną interpretację (aka: każdy dev uważa, że jego lub jej sposób robienia rzeczy jest najlepsza).
Możliwe, że wszystkie gałęzie, które masz, służą lub służyły celowi. Bez jasno określonego procesu docelowego ludzie będą nadal robić to, co im odpowiada, w sposób, który najbardziej im odpowiada (i słusznie).
Na przykład twój cel powinien być zdefiniowany tak jasno, jak Vincent Driessen zdefiniował swój „udany model rozgałęziania Git” . Jeśli spojrzysz na ten model, jest bardzo precyzyjny: mówi, gdzie powinien być stabilny kod i gdzie należy opracować niestabilne funkcje. Mówi także o tym, jak i kiedy rozgałęzić, zaktualizować i połączyć ponownie. Wiesz, do czego służy każda gałąź i co z nimi zrobić. Używamy odmiany tego, co zaproponował Vincent, a nasza odmiana jest zdefiniowana na naszej wiki.
Ważne jest, aby cały zespół zrozumiał i uzgodnił cel. Warto przypomnieć ludziom, że nie szukasz ich ulubionego modelu rozgałęziania, ale modelu, na który wszyscy członkowie zespołu mogą się zgodzić i z łatwością korzystać.
Po określeniu celu możesz opracować plan migracji. Ten plan może być tak długi lub tak krótki, jak chcesz. Widziałem taki model rozgałęzienia narzucony z dnia na dzień; w innych miejscach odbyło się to na 2 lub 3 sprintach. Nie ma to dla mnie większego znaczenia, dopóki się poprawiamy.
Możesz zacząć od „największych” lub ważniejszych gałęzi. Np .: „odtąd master musi być zawsze w stanie do wdrożenia w prod, a gałąź deweloperów musi się zawsze kompilować” (lub dowolne inne reguły). Następnie wymuś gałęzie wersji (wydania). Następnie wymuszaj gałęzie funkcji. Następnie nałóż zawieszenie kodu na gałąź wersji, jeśli ma to sens.
DevOps to przede wszystkim komunikacja, otwartość i wydajność. Pojęć tych należy pamiętać i przekazywać w trakcie całego procesu.
Proponuję zaprosić osoby spoza zespołu programistów na spotkanie procesowe w charakterze obserwatorów. Operatorzy lub kierownictwo średniego szczebla mogą powiedzieć coś o twoim modelu. Potrzeby programistów powinny być traktowane priorytetowo, ale jeśli model rozgałęzienia nie jest w stanie dostosować się do sposobu zarządzania, lepiej wiedzieć teraz, a nie za miesiąc lub dwa.
Jeśli masz naprawdę duże zespoły, spróbuj jednak uwzględnić wszystkich. W bardzo dużych zespołach i tak skończysz dwa lub trzy spotkania. Zaproś więc kierowników zespołów do pokoju, ale przygotuj webcast i daj o tym wszystkim znać. Jeśli ktoś ma jakieś sugestie lub obawy, będzie w stanie wyrazić je liderowi swojego zespołu, a jeśli będzie ono aktualne, zostanie skierowane na drugim lub trzecim spotkaniu.