Stało się to irytującym czynnikiem w pracy z dużymi zespołami: jak zarządzać meldowaniami i zapobiegać konfliktom funkcji oraz odpowiednio zarządzać zależnościami z kontrolą źródła?
Obecnie w moim miejscu pracy korzystamy z TFS 2008 i migrujemy do TFS 2010 na początku grudnia. Po pierwsze, jakakolwiek kontrola źródła jest lepsza niż żadna, ale jakie podejście okazało się przydatne, aby zapobiec wielu kontrolom i cofnięciu całej historii kontroli źródła? Czy lotny pień jest najlepszym sposobem na przejście lub rozgałęzienie, gdy wdrażasz nową funkcję, a gdy będziesz szczęśliwy, wrócisz do pnia?
Naprawdę chciałbym usłyszeć doświadczenia innych ludzi i być może najlepsze praktyki zarządzania kontrolą źródła.
version-control
Nickz
źródło
źródło
Odpowiedzi:
TFS? Biegnij na wzgórza! Odejdź tak szybko, jak to możliwe. Robi wiele różnych rzeczy, ale żadna z nich nie jest tak dobra, jak dostępne narzędzia najlepszych ras.
Ale poważnie:
Gdy masz już przyzwoity system kontroli wersji (SVN, GIT itp.), Zaleciłbym ustawienie reguł zarządzania oddziałami, np. Kiedy tworzyć oddziały, po co, kiedy łączyć, kto i wiele więcej.
Do niedawna używaliśmy jednej gałęzi do nowego rozwoju („trunk”). W celu wydania utworzymy gałąź z pnia. Ostateczna kontrola jakości zostanie przeprowadzona w tym oddziale, a po jej zakończeniu wydamy (jesteśmy w wersji miesięcznej).
Przestawiliśmy się na koncepcję „bez śmieci w bagażniku”, aby zmniejszyć ryzyko związane z harmonogramem. Ta koncepcja zasadniczo zawiera regułę, według której należy tworzyć gałęzie do prac programistycznych oddzielnie od pnia. Na przykład możesz mieć oddzielną gałąź dla funkcji, dla małego zespołu programistów lub podobnego. Używamy „epików”, aby opisać małą cechę lub dającą się uwolnić część cechy i stworzyć gałąź dla każdej epiki. Co najmniej raz dziennie wszystkie zmiany z pnia są łączone w epicką gałąź. Kluczem jest dobra obsługa scalania przez kontrolę wersji lub oddzielne narzędzie (np. Scalanie trójstronne). Kontrola jakości eposu zostanie wykonana na gałęzi epickiej. Po przejściu epicka gałąź zostanie połączona w pień i zostanie uruchomiony test integracji. Wciąż mamy oddziały na wydania.
Dzięki epickim gałęziom znacznie zmniejszyliśmy ryzyko harmonogramu, ponieważ jesteśmy teraz w stanie uwolnić się z pnia i uwzględnić wszystkie epopeje, które zostały pomyślnie połączone w pień. Eposy, które nie są kompletne, tęsknią za autobusem i pojawią się w kolejnej wersji (w przyszłym miesiącu).
To oczywiście może działać tylko w naszym środowisku. Bardzo prawdopodobne, że będziesz mieć czynniki inne niż nasze, które wpłyną na wybór najlepszych opcji zarządzania oddziałami.
Na przykład, jeśli masz zespół z wieloma osobami pracującymi zdalnie i nie zawsze podłączonymi do serwera kontroli wersji, wtedy chciałbyś użyć systemu kontroli wersji, który obsługuje model rozproszony. GIT i kilka innych należałoby do tej kategorii. Według mojej najlepszej wiedzy TFS wymaga połączenia z serwerem, aby pliki były zapisywalne (naprawione w wersji 2010?).
Mam nadzieję, że udało mi się pokazać, że nie ma „jednego rozmiaru dla wszystkich”. Zacznij od procesów w konkretnym zarządzaniu oddziałami, określ wymagania i na koniec wybierz narzędzie, które najlepiej odpowiada Twoim potrzebom. Może to TFS, a może nie.
źródło
Opowiadam się za jedną gałęzią za funkcję, ponieważ pozwala ona na dużą elastyczność przy podejmowaniu decyzji, które funkcje wysłać i które odłożyć.
To, jak dobrze to działa w twojej sytuacji, zależy od tego, jak dobrze Twój VCS obsługuje oddziały i, co ważniejsze, łączenie. DVCS, takie jak Git & Mercurial, sprawiają, że jest to stosunkowo trywialne ćwiczenie. SVN mniej. Udało mi się ominąć TFS, chociaż dużo o tym czytałem, w większości obawiam się, że są nieuprzejma. Jeśli utkniesz w TFS, zrób małą wersję pilotażową w oparciu o jedną funkcję dla każdego oddziału i sprawdź, jak dobrze idzie ci połączenie.
źródło
Po pierwsze, wyłączenie odpowiedzialności. Trudno powiedzieć, jaki jest najlepszy sposób zarządzania Twoim źródłem, ponieważ nie jesteśmy świadomi tego, jak Twój zespół lub zespoły pracują na co dzień.
Ogólnie lepiej jest pracować na bagażniku. Dla każdego głównego wydania należy go rozgałęzić - tak, aby poprawki błędów dla wersji wydania znajdowały się w gałęzi, którą można ponownie połączyć z bagażnikiem. Wszyscy programiści pracują na linii głównej i regularnie zatwierdzają kod (minimum raz dziennie).
Regularne scalanie nowego kodu minimalizuje ból związany z łączeniem dużych fragmentów kodu w fazie ogromnej integracji. Rozprzestrzeniając ból, poczujesz go mniej. Im częściej członkowie zespołu zatwierdzają kod, tym mniej będą musieli się łączyć - ponieważ zawsze będą mieli najnowsze źródło.
źródło
Nigdy nie korzystałem z TFS 2008/2010, ale z tego, co przeczytałem na różnych forach, jest wiele negatywnych opinii na temat używania TFS do kontroli wersji. To sprawiło, że do tej pory trzymałem się z dala od TFS.
Obecnie używam SVN i Gita, uważam, że oba są dobre dla małych zespołów lub dla pojedynczego zespołu, ale osobiście nie poleciłbym SVN dla dużego zespołu.
Miałem oczy na PlasticSCM i spróbuję tego w najbliższej przyszłości.
Przepraszam, że nie odpowiedziałem na konkretne pytanie, opublikowałbym komentarz, gdyby moje uprawnienia na to pozwoliły.
źródło
Myślę, że git sprawia, że wszystkie inne programy do kontroli źródeł stają się przestarzałe. Rozgałęzianie i łączenie jest łatwe, a jeśli występują problemy, zostaje ono ograniczone, ale można uniknąć wielu problemów, ponieważ zachęca ono do bardzo częstych zatwierdzeń, rozgałęziania i scalania. Każdy użytkownik otrzymuje pełną kopię repozytorium (można to przyciąć, ale pracuję z dość dużą bazą kodu i nie stanowi to problemu), więc jest coś z automatyczną kopią zapasową. Zatwierdzanie / push / pull jest szybkie, a jedną z najważniejszych rzeczy jest to, że przerywa sprzężenie między nazwą pliku a śledzeniem. Dane pliku, w tym nazwa i ścieżka, to obiekt blob danych, do którego odwołuje się węzeł drzewa, który jest niezależny od ścieżek. Jest to nie tylko bezpieczniejsze, ale niektóre rodzaje problemów „nigdy nie rób tego” w przypadku czegoś takiego jak SVN nie stanowią problemu. Może być używany jako tradycyjna konfiguracja koncentratora lub peer-to-peer, a te zastosowania można dowolnie mieszać w tej samej konfiguracji. Jest kryptograficznie zabezpieczony przed nieudokumentowanymi wstawkami. I to jest bardzo szybkie.
Uważam, że używam go teraz w domu przez cały czas, aby śledzić dokumenty i synchronizować je między komputerami, ponieważ łatwiej jest zatwierdzić i wypchnąć serwer plików niż wykonać kopię zapasową na serwerze lub zapisać tam.
Wada jest trochę stromą krzywą uczenia się, ponieważ łamie ona wszystkie zasady, do których ludzie są przyzwyczajeni z kontrolą źródła, w subtelny sposób, ale jest to krótka stroma krzywa uczenia się.
źródło
Niektóre z dobrych praktyk, które naprawdę przestrzegamy i bardzo nam pomogły:
1) Upewnij się, że nie masz zapisywalnej kopii pliku w swoim lokalnym i zawsze sprawdź, aby edytować. (Jeśli czasami musisz pracować lokalnie, spróbuj połączyć je w kontrolę źródła przed EOD).
2) Oznaczaj swoje pliki okresowo, po niewielkich znaczących kamieniach milowych.
3) Daj dobre komentarze kasowe lub meldujące się. Pomoże to podczas przeglądania, czasami nie trzeba otwierać i porównywać wersji.
źródło
Z mojego POV jest to dwuskładnikowe zadanie: musisz to zrobić po stronie technicznej (dobre i łatwe i kuloodporne rozgałęzianie | łączenie | audyt itp.) I zarządzania (dobrze ugruntowane zasady „co”, „kiedy”, jak). Dwie lub nawet trzy warstwy kodu separacji w ALM: coś w rodzaju „stabilny” (zaliczone testy jednostkowe), „niestabilny” (każda zawarta funkcja została zakończona, ale aplikacja jako produkt ma pytania po integracji / tak, może się zdarzyć /) i „ Praca w toku". W ten sposób właściwy Project Manager może zmniejszyć zakłócenia wspólnej pracy programisty.
TFS (którego nie używałem, używam i nie będę używać) ma pewne, AFAIK, podstawowe problemy w swoim aspekcie zarządzania kontrolą źródeł. Po prostu odsyłam tutaj do niektórych tekstów Jamesa McKaya:
źródło
Naprawdę ładny i niedawny artykuł, który w jasny i zwięzły sposób porównuje i kontrastuje kilka różnych sposobów pracy z kontrolą źródła, znajduje się tutaj: Kontrola źródła została wykonana poprawnie .
Nie sądzę, aby istniała jedna strategia / najlepsza praktyka dotycząca korzystania z kontroli źródła. Dojrzałe zespoły, które od dawna współpracują, odczuwają znacznie mniej „bólu” w tej dziedzinie, nawet jeśli nie przestrzegają popularnych „najlepszych praktyk”.
Jeśli chodzi o narzędzia ... To prawie nie ma znaczenia. Najważniejsze jest to, aby wszyscy w zespole byli na tej samej stronie pod względem wykorzystania. Oznacza to, że każdy musi zrozumieć, w jaki sposób zarządzana jest linia kodu i czego się od niej oczekuje. Zresztą w praktyce zazwyczaj NIE masz wyboru, którego narzędzia użyć. Wykorzystaj wszystko, czego używasz.
źródło