Ogólną zasadą jest, aby zameldowanie było małe, a zameldowanie często. Ale czasami zadanie wymaga dużych zmian w podstawowych ramach. Następnie odprawa przed wykonaniem zadania spowoduje przerwanie projektu do momentu sprawdzenia ukończonej pracy.
Więc jakie strategie stosują ludzie, aby zmniejszyć ryzyko utraty pracy lub decydowania o tym, co robisz, to niewłaściwe podejście, a następnie zmiana zdania po usunięciu kodu i wypróbowaniu innego podejścia?
Kiedy będę mógł, zamelduję się, połowa wykonanych prac została zakomentowana, lub jeśli się kompiluje i nic nie używa nowych plików, to je zarejestruję. Im większa zmiana, tym większe prawdopodobieństwo, że rozwiążę projekt, a następnie scalę z powrotem kiedy wszystko znowu działa. Inną opcją, jeśli pozwala na to system kontroli źródła, są zestawy półek, które są w zasadzie małymi gałęziami. Więc kiedy skończę dzień lub dojdę do punktu decyzyjnego, odłożę swoje zmiany, a następnie, jeśli wydarzy się coś katastrofalnego lub chcę wrócić do tego punktu, mogę.
źródło
Odpowiedzi:
Używam git, więc moja odpowiedź brzmi „gałąź”. Rozgałęź się i popełniaj kawałek posiłku, wykonując różne części.
Przekaż swoje zobowiązania pod prąd, tak jak jesteś zadowolony, aby Twoi koledzy mogli przejrzeć zmiany bez zakłócania pnia.
Gdy wszyscy będą zadowoleni z kodu, połącz i gotowe!
(To, co zwykle robię dla stosunkowo długo działających gałęzi, to okresowe łączenie pnia (master, terminologia git) z moją gałęzią, więc te dwie gałęzie nie rozchodzą się zbyt radykalnie.)
źródło
Myślę, że odpowiedź będzie się różnić w zależności od używanego systemu kontroli wersji: scentralizowanego (np. Subversion) lub rozproszonego (np. Git). Nie mam żadnych rzeczywistych doświadczeń z używaniem rozproszonego systemu kontroli źródła, więc moja odpowiedź opiera się na tym, co robimy z subversion.
Jeśli dojdzie do dużej zmiany, która z czasem zepsuje naszą kompilację tułowia lub naprawdę zakłóci resztę zespołu w inny sposób, utworzymy oddział. Powiedziałbym jednak, że powinieneś zrobić tyle, ile możesz, aby tego uniknąć - większość zmian może być umieszczona obok reszty kodu przy niewielkim wysiłku. Na przykład, możesz uruchomić ścieżki kodu do nowego kodu (za pomocą prostych instrukcji if lub możesz wstrzyknąć nowe wersje w oparciu o ustawienia konfiguracji, jeśli używasz frameworku DI). Następnie, po zakończeniu, po prostu zmień konfigurację na nową wersję, przetestuj wszystko, usuń nieużywany kod, przetestuj ponownie i na koniec usuń ustawienie konfiguracji. Nie zawsze możesz to zrobić, ale ze względu na koszty utrzymania oddziału uważam, że zawsze powinieneś sprawdzić, czy jest to możliwe.
Jeśli robisz rozgałęzienie, myślę, że błędem, który często widzę, jest nieadekwatność gałęzi do pnia. Powinieneś ciągle łączyć zmiany z pnia do swojej gałęzi, podczas gdy ona istnieje, aby po zakończeniu odwrotnego scalania wszystkiego z powrotem było dość trywialne.
źródło
W naszym zespole używamy subversion i zwykle dokonujemy niewielkich zmian bezpośrednio w bagażniku. W przypadku większych zadań pracujący nad nim programista zazwyczaj tworzy gałąź prywatną, która po zakończeniu jest łączona z pniem. Następnie prywatny oddział zostaje usunięty. Oczywiście, podczas gdy prywatny oddział istnieje, jego właściciel powinien często się w nim sprawdzać.
Staramy się unikać długotrwałych połączeń między gałęziami i pniami, ponieważ wymaga to starannej księgowości. Zamiast tego mamy relatywnie krótkotrwałe gałęzie, które są scalane z powrotem do pnia tylko raz, a wkrótce potem usuwane.
I mamy zasadę, że nic nie może zostać zatwierdzone ani połączone do pnia, dopóki przynajmniej jedna inna osoba nie przejrzy zmian i nie zatwierdzi ich.
źródło
Podobnie jak zwykły komentarz osób SQL Server „zależy”
Jeśli możesz, sugeruję utworzenie gałęzi w kodzie, abyś mógł nadal stosować małe kontrole swojej pracy. Po zakończeniu wykonaj scalenie z powrotem do głównego pnia.
Tak, istnieje pewna szansa na powtórzenie tego wysiłku. ale przynajmniej zachowasz ślad pracy, który możesz cofnąć, okaże się to ślepym zaułkiem.
źródło