Szukam „najlepszych praktyk” dotyczących ról i obowiązków, a konkretnie tego, kto jest odpowiedzialny za fuzje z gałęzi rozwoju do pnia (lub głównego). Zasadniczo szukam amunicji, która pomogłaby mojej sprawie.
Pozwól mi opisać, z czym mam do czynienia. Jestem głównym programistą (właścicielem) konkretnej aplikacji. Nasza firma niedawno przeniosła się z VSS (gdzie byłem administratorem bazy danych VSS, w której moja aplikacja była przechowywana) na TFS (gdzie mam uprawnienia tylko do gałęzi programistycznych utworzonych przez nasz zespół „operacyjny”). W poprzednich pracach byłem administratorem TFS, więc znam się na TFS i MSBuild.
Nie mam problemu ze stosowaną strategią rozgałęziania i scalania (gałąź główna, gałęzie rozwoju błędów / projektów tworzone w razie potrzeby, scalane z powrotem do głównej, a następnie awansowane do gałęzi wydania). Mam problemy:
Nie mogę tworzyć własnych oddziałów. Muszę utworzyć zadanie TFS, aby członek zespołu ds. Operacji utworzył dla mnie gałąź.
Nie mogę połączyć się z Main z moim działem rozwoju. Muszę utworzyć zadanie TFS, aby członek zespołu ds. Operacji wykonał scalenie, a następnie mam nadzieję, że nie „nadepnie” na żadną z moich zmian w zespole, ponieważ „facet operacyjny” może, ale nie musi, być programistą znajomość kodu, który on scala, jest niewielka lub żadna.
Nie mogę połączyć się z rozwojem do Main. Ponownie muszę utworzyć zadanie TFS, aby „facet operacyjny” wykonał scalenie, mając nadzieję, że zrobi to poprawnie. Następnie muszę utworzyć kolejne zadanie TFS, aby ponownie połączyć się z moim oddziałem, aby móc rozwiązać wszelkie problemy, które wystąpiły, poprzez połączenie nie-programistów z Main.
Nie mogę tworzyć ani edytować skryptów MSBuild. Znowu muszę współpracować z zespołem „ops”, który jest nowy w MSBuild, więc można wykonywać tylko najbardziej podstawowe zadania kompilacji. (Zapomnij o czymkolwiek złożonym lub zabraniaj niebu niestandardowego zadania).
Nie mogę wykonać skryptu MSBuild. Ponownie tylko zespół „ops” może to zrobić.
Podsumowując, zazwyczaj jest to zasób typu „off-shore”, który wykonuje wymagane zadania, więc nawet jeśli utworzę zadanie do (rozgałęzienia / scalenia / kompilacji) wczesnym rankiem, prawdopodobnie nie zostanie ono ukończone do tego wieczoru.
Teraz nie mam problemu z zespołem „operacyjnym” utrzymującym gałęzie wydania. Wszystko, co robią, to (zasadniczo) pobieranie najnowszej wersji z Main i promowanie jej w gałęzi wydania; więc dopóki „Main” będzie stabilny i gotowy, gałąź wydania będzie dobra.
Uważam, że potencjalni klienci techniczni (tacy jak ja) powinni być odpowiedzialni za utrzymanie łącza („Main”) i wszelkie połączenia do / z gałęzi programistycznych. Kierownik zespołu powinien również mieć możliwość generowania skryptów MS Build do budowania i wdrażania w środowisku testowym integracji.
Czy ktoś może skierować mnie do dokumentu najlepszych praktyk, który pomoże mi udowodnić moją sprawę? Wszystkie moje poszukiwania ujawniły tylko najlepsze praktyki dotyczące technik rozgałęziania i łączenia, i żadna wzmianka o WHO nie powinna wykonywać wspomnianego rozgałęziania / łączenia.
źródło
WHO should be performing said branching/merging.
to wewnętrzna decyzja organizacyjna. Naprawdę nie jest to coś, w czym moglibyśmy ci pomóc ...Odpowiedzi:
Moje ogólne podejście do najlepszych praktyk jest takie, że każdy członek zespołu programistycznego powinien być w stanie wykonać dowolną akcję na drzewie, zakładając, że takie działania nie robią rzeczy takich jak rozpoczęcie wdrożenia produkcyjnego. W przypadkach, gdy konkretna gałąź / znacznik / repozytorium działa jako źródło zautomatyzowanych wdrożeń, wprowadzanie rozsądnych kontroli zmian lub przeszkody w wejściu mają sens, bardziej z utrzymywania błędów jedynie z perspektywy błędów niż z jakiegoś dziwactwa. Zachęcam programistów do tworzenia gałęzi i ulepszania skryptów kompilacji. W razie potrzeby znajdę sposoby uzyskania dostępu programistów do produkcji. Jednym z punktów kontroli źródła jest to, że jest to skuteczna magiczna gumka do pomyłek - najgorsze, co musisz zrobić, to cofnąć o jedno lub dwa obroty i rozgałęzić to.
Niestety nie brzmi to tak, jak tutaj przyjęli. Aby to pokonać, myślę, że musisz objąć kilka kątów:
a) Udowodnij, że te zasady są szkodliwe dla rozwoju rzeczy. Zaloguj się przez cały czas oczekiwania na operacje, aby zacząć nad czymś pracować. To samo powinno sprzedać rozsądne zarządzanie, dlaczego jest to zła polityka.
b) Zaprzyjaźnij się z operacjami - być może istnieje powód, dla którego obowiązują takie zasady. Być może to rozumowanie mogłoby zostać rozwiązane w bardziej skuteczny sposób.
Mam nadzieję że to pomoże.
źródło
Praktyki, które widziałem to:
Każdy może tworzyć gałęzie pracy według własnego serca. Deweloper musi być w stanie utworzyć gałąź funkcji w momencie, w którym odkryje, że warto przechowywać bieżące prace w toku. Ponieważ chcą / powinni zrobić kopię zapasową na koniec dnia, chcą się nią podzielić z innym członkiem zespołu, muszą być chronieni przed zmianami w grze głównej lub czymkolwiek.
Każdy może zrobić absolutnie wszystko dla gałęzi rozwoju. Deweloper musi być w stanie połączyć się z głównym, gdy tylko inny programista powie im, że coś, czego potrzebują, zostało zintegrowane z głównym.
Aby połączyć z głównym (integracja), istnieją trzy opcje:
Ten, kto przygotuje funkcję, powinien dostosować skrypt kompilacji. Ale nie jestem pewien, jak to działa z TFS; w systemach, w których używałem skrypt kompilacji był zawsze plikiem wersjonowanym, więc programiści edytowali go tak jak każdy inny i był zintegrowany ze wszystkim innym.
Jeśli istnieje wyznaczony integrator, zazwyczaj zajmują się definiowaniem (który skrypt uruchomić) i uruchamianiem kompilacji. W przeciwnym razie albo lider zespołu to zrobi, wyznaczony członek zespołu to zrobi, albo ktoś ma uprawnienia, a delegaci lidera zespołu konfigurują i uruchamiają poszczególne kompilacje indywidualnie dla każdego przypadku.
W żadnym wypadku powyższe operacje nie powinny wymagać od operatora spoza zespołu. Operator jest potrzebny tylko do konfigurowania uprawnień, tworzenia replik i tym podobnych.
źródło
Nie wspominając o „najlepszych praktykach” (zwróćcie uwagę na to), jest to problem zarządzania - zasadniczo nie jesteś w stanie właściwie wykonywać swojej pracy z powodu ograniczeń nałożonych na ciebie.
Właściwie nie ma znaczenia, jaka jest „najlepsza praktyka” - jest to prosty, dający się udowodnić problem, który wpłynie na produktywność Ciebie i Twojego zespołu i na tej podstawie musisz zająć się tym przez swoje kierownictwo.
Widzę, że wymachowanie dokumentem najlepszych praktyk może (ale tylko może ) pomóc w przekonaniu ich, ale o wiele lepszym jest pomysł, że będziesz musiał mieć członków zespołu deweloperów siedzących na rękach, czekających na kogoś w innej strefie czasowej zjednoczyć swoje działania, chyba że procesy zostaną usprawnione / zracjonalizowane.
I nie bądź zbyt konfrontacyjny - ile chcesz wiedzieć, dlaczego obowiązują ograniczenia, jakie jest uzasadnienie ...
źródło