Kontrola źródła: Role i obowiązki - najlepsze praktyki


10

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:

  1. Nie mogę tworzyć własnych oddziałów. Muszę utworzyć zadanie TFS, aby członek zespołu ds. Operacji utworzył dla mnie gałąź.

  2. 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.

  3. 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.

  4. 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).

  5. Nie mogę wykonać skryptu MSBuild. Ponownie tylko zespół „ops” może to zrobić.

  6. 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.


WHO should be performing said branching/merging.to wewnętrzna decyzja organizacyjna. Naprawdę nie jest to coś, w czym moglibyśmy ci pomóc ...
yannis

2
Chcesz powiedzieć nam przypuszczalne powody takiego bizantyjskiego zabiegu? Domyślam się, że „zgodność z CMM poziomu N” lub „Sarbanes Oxley”.
Bruce Ediger,

SOX, ale tylko częściowo. Kiedy po raz pierwszy pojechaliśmy do TFS, programiści mieli dostęp do Main i Dev. Ale potem „niektórzy” programiści (żaden z mojego zespołu) postanowili po prostu popracować nad rozwojem Main zamiast w gałęzi deweloperów, więc teraz wszystkie zespoły są karane.
Michael Chatfield,

Odpowiedzi:


8

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.


3
+1, wpisałem coś podobnego: udokumentuj stracony czas i wysiłek: pozwól decydentom dokonać świadomego wyboru: czy ryzyko tego, czego próbują uniknąć przy obecnej restrykcyjnej polityce, jest warte kosztów?
Jamie F,

Planuję zorganizować takie spotkanie, ale pomogłbym, gdybym mógł wykazać, że ta polityka jest sprzeczna z „najlepszymi praktykami” branży.
Michael Chatfield

Gotcha Nie jestem pewien, czy jest tam coś konkretnego, ale bity w kontroli źródła w The Pragmatic Programmer mogą mieć w sobie jakieś klejnoty. Wygląda na to, że była to rażąca nadmierna reakcja niektórych złych programistów, a nie przemyślana decyzja polityczna lub polityka. Postanowiłbym zawrzeć umowę, w której Ops ma fuzje w Main. Nalegałbym również, aby operatorzy byli odpowiedzialni za zapewnienie, że scalenie niczego nie zepsuje, co prawdopodobnie skończy się na tym, że z tego wyjdą. . .
Wyatt Barnett

Po drugie, Jamie, cały czas spędzony na łączeniu się lub czekaniu na połączenie powinien zostać zapisany, abyś miał dowody. Nie ma „najlepszych praktyk”, które pasowałyby do wszystkich firm. Pracowałem w dużej firmie, w której to zadanie wykonał dedykowany zespół zarządzający konfiguracją. W mojej obecnej firmie jest dedykowany zespół zarządzający wydaniami, który nie wykonuje fizycznego zadania scalenia z głównym, ale jest logicznym właścicielem i przeprowadza audyt. Ale operacje IMHO zwykle nie dotyczą kodu źródłowego.
softveda

2

Praktyki, które widziałem to:

  1. 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.

  2. 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.

  3. Aby połączyć z głównym (integracja), istnieją trzy opcje:

    • Programiści robią to sami. Po prostu omawiają ryzyko z głównym programistą i odpowiednio testują funkcje. Oznacza to, że każdy ma uprawnienia; jeśli ktoś złamie zasady, zostanie po prostu skarcony, a niewłaściwa zmiana zostanie cofnięta.
    • Inny programista robi to po sprawdzeniu zmian. Nadal wymaga to od wszystkich uprawnień; reguły są nadal egzekwowane przez głównego programistę.
    • Wyznaczony jest integrator, który dokonuje przeglądu i łączy w main. Ale integrator jest częścią zespołu i musi zrozumieć kod. W mniejszym zespole byłaby to ta sama osoba co architekt, w większym byliby osobni, ale musieliby ściśle współpracować.
  4. 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.

  5. 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.

  6. 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.


Byłbym zwolennikiem „wyznaczonego integratora”, pod warunkiem, że jest to programista w zespole. I tak mam nadzieję na tę trasę; to mały zespół (4 osoby łącznie ze mną). Mam nadzieję, że mogę uzyskać dostęp do tworzenia / uruchamiania skryptów MS Build, głupio byłoby dla mnie tworzyć skrypty nAnt dla wdrożeń programistycznych, a następnie dla zespołu „ops” zbudować zasadniczo ten sam skrypt dla MSBuild. Ale to zrobię, jeśli zajdzie taka potrzeba.
Michael Chatfield

2

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 ...


1
Tak, bardzo się staram, aby nie być konfrontacyjnym ... pochodzącym od faceta, którego żona kupiła mu koszulkę „Zgadzam się z tobą, ale oboje się mylimy”. :)
Michael Chatfield

To absolutny zabójca, kiedy masz rację (-: W tym przypadku trudno argumentować, że nie jesteś ... ale potrzebujesz swojego kierownictwa na boku, jeśli coś się zmieni
Murph
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.