W tym kontekście lubię myśleć o kodowaniu jako o wspinaczce skalnej. Wspinasz się trochę, a następnie umieszczasz kotwicę w skale. Jeśli kiedykolwiek upadniesz, ostatnią posadzoną przez ciebie kotwicą jest punkt, który cię zabezpiecza, więc nigdy nie spadniesz z odległości większej niż kilka metrów. To samo z kontrolą źródła; trochę kodujesz, a kiedy osiągniesz nieco stabilną pozycję, popełniasz poprawkę. Jeśli okropnie zawiedziesz, zawsze możesz wrócić do ostatniej wersji i wiesz, że jest stabilna.
To powiedziawszy, jeśli pracujesz w zespole, zwykle upewniasz się, że wszystko, co popełniasz, jest kompletne, ma sens, buduje się czysto i nie niszczy rzeczy innych. Jeśli chcesz wprowadzić większe zmiany, które mogą zakłócać pracę innych ludzi, stwórz oddział, abyś mógł dokonywać zmian bez przeszkadzania innym.
Zależy to również od używanego systemu SCM. Systemy rozproszone zazwyczaj sprawiają, że scalanie i rozwidlanie jest bezbolesne i szybkie, a można zatwierdzać lokalnie; oznacza to, że powinieneś dużo popełnić i pchnąć / scalić, kiedy wykonałeś znaczną ilość pracy. W przypadku scentralizowanych systemów, takich jak svn lub cvs, zatwierdzanie jest bardziej kosztowne i wpływa na wszystkich. Rozgałęzienie częściowo rozwiązuje ten problem, ale ponieważ dzieje się to na serwerze, może być boleśnie powolne, a scalanie może być kłopotliwe. Dlatego w scentralizowanych SCM często zachowuje się bardziej ostrożną kulturę, w której dokonuje się zobowiązania dopiero po wykonaniu znacznej ilości pracy.
Jeśli chodzi o dodatek: Proszę, nie rób tego. Linie kodu, liczba zatwierdzeń, liczba znalezionych / rozwiązanych błędów itp. Są bardzo złymi pomiarami jakości, a nawet ilości.