Zadałem sobie te same pytania, kiedy zaczęliśmy wdrażać Subversion tutaj - około 20 programistów zajmujących się 4-6 projektami. Nie znalazłem ani jednego dobrego źródła z „odpowiedzią”. Oto kilka części tego, jak rozwinęła się nasza odpowiedź w ciągu ostatnich 3 lat:
- popełniać tak często, jak jest to przydatne; naszą praktyczną zasadą jest zatwierdzanie za każdym razem, gdy wykonałeś wystarczająco dużo pracy, że byłoby problem z ponownym wykonaniem tego, jeśli modyfikacje zostałyby utracone; czasami zatwierdzam co około 15 minut, innym razem mogą to być dni (tak, czasami napisanie 1 linii kodu zajmuje mi dzień)
- używamy oddziałów, jak sugerowała jedna z wcześniejszych odpowiedzi, dla różnych ścieżek rozwoju; w tej chwili dla jednego z naszych programów mamy 3 aktywne gałęzie: 1 dla głównego rozwoju, 1 dla jeszcze niedokończonych prac nad zrównoleglenie programu i 1 dla próby poprawienia go tak, aby używał plików wejściowych i wyjściowych XML;
- rzadko używamy tagów, chociaż uważamy, że powinniśmy ich używać do identyfikacji wydań do produkcji;
Pomyśl o rozwoju postępującym jedną ścieżką. W pewnym momencie marketingu deweloperskiego zdecyduj się na wypuszczenie pierwszej wersji produktu, więc umieszczasz flagę na ścieżce oznaczonej jako '1' (lub '1.0' lub co masz). W innym czasie jakaś jasna iskra decyduje się na zrównoleglenie programu, ale decyduje, że zajmie to kilka tygodni, a ludzie chcą w międzyczasie podążać główną ścieżką. Więc budujesz rozwidlenie na ścieżce, a różni ludzie wędrują po różnych widłach.
Flagi na drodze nazywane są „tagami”, a rozwidlenia jezdni to miejsca, w których dzielą się „gałęzie”. Czasami też gałęzie ponownie się łączą.
- umieszczamy w repozytorium cały materiał potrzebny do zbudowania pliku wykonywalnego (lub systemu); Oznacza to co najmniej kod źródłowy i tworzenie plików (lub plików projektu dla programu Visual Studio). Ale kiedy mamy ikony, pliki konfiguracyjne i wszystkie inne rzeczy, to trafia do repozytorium. Część dokumentacji trafia do repozytorium; z pewnością każda dokumentacja, taka jak pliki pomocy, które mogą być integralną częścią programu, robi to i jest to przydatne miejsce na umieszczenie dokumentacji programisty.
Umieściliśmy tam nawet pliki wykonywalne systemu Windows dla naszych wydań produkcyjnych, aby zapewnić jedną lokalizację dla osób poszukujących oprogramowania - nasze wersje Linuksa trafiają na serwer, więc nie trzeba ich przechowywać.
- nie wymagamy, aby repozytorium zawsze było w stanie dostarczyć najnowszą wersję, która jest budowana i uruchamiana; niektóre projekty działają w ten sposób, inne nie; decyzja należy do kierownika projektu i zależy od wielu czynników, ale myślę, że załamuje się przy dokonywaniu większych zmian w programie.