Programowanie zespołowe z użyciem systemu CVS

W środowisku programowania zespołowego systemu CVS (Concurrent Versions System) członkowie zespołu pracują we własnych, oddzielonych od innych, środowiskach roboczych. W końcu jednak muszą się podzielić wynikami swojej pracy. Służy do tego repozytorium CVS.

Rozgałęzienia

System CVS używa modelu rozgałęzień do obsługi pracy wielotorowej, w której poszczególne zadania są wprawdzie realizowane oddzielnie, ale w dużym stopniu zależą od siebie nawzajem. Rozgałęzienia to miejsca, w których zespół programistów współużytkuje i integruje wyniki prowadzonych prac. Rozgałęzienie można pojmować jako współużytkowany obszar roboczy, aktualizowany przez członków zespołu, gdy wprowadzają oni zmiany do projektu. W modelu tym pojedyncze osoby mogą pracować nad zespołowym projektem CVS, współużytkować wyniki swojej pracy z innymi w miarę wprowadzania zmian i uzyskiwać dostęp do osiągnięć innych członków zespołu, wypracowywanych w miarę rozwoju projektu. Specjalne rozgałęzienie o nazwie HEAD reprezentuje główny kierunek pracy w repozytorium (rozgałęzienie HEAD często jest nazywane pniem).

Współużytkowanie wyników pracy

Gdy członkowie zespołu kończą pracę, umożliwiają współużytkowanie jej wyników, zatwierdzając wprowadzone zmiany do rozgałęzienia. Jeśli zaś chcą pobrać najnowsze wyniki prac, aktualizują swoje lokalne obszary robocze o zmiany dostępne w rozgałęzieniu.  Dlatego rozgałęzienie nieustannie się zmienia, a realizacja projektu postępuje w miarę jak członkowie zespołu wprowadzają nowe wyniki prac.

Rozgałęzienie efektywnie odzwierciedla bieżący stan projektu. Członkowie zespołu mogą w dowolnej chwili aktualizować swoje obszary robocze o dane dostępne w rozgałęzieniu i w ten sposób być zawsze na bieżąco.

Interakcja z rozgałęzieniami i środowiskami roboczymi

Optymistyczny model pracy zespołowej

System CVS udostępnia dwie podstawowe funkcje potrzebne do pracy w zespole:

Przechowywanie historii pozwala porównywać bieżące prace z wcześniejszymi wersjami roboczymi, powracać do starszych wersji, jeśli okażą się lepsze, itd. Dobra koordynacja wyników pracy decyduje o istnieniu jednej definicji bieżącego stanu projektu, uwzględniającej zintegrowane wyniki pracy całego zespołu. Koordynacja ta jest udostępniania w modelu rozgałęzień.

Model optymistyczny to taki, w którym każdy członek zespołu może wprowadzać zmiany w dowolnym z zasobów, do których ma dostęp.  Ponieważ jest możliwe, że dwóch członków zatwierdzi do rozgałęzienia zmiany dotyczące tego samego zasobu, mogą występować konflikty, które trzeba jakoś rozwiązać. Model ten jest określany jako optymistyczny, ponieważ jest oparty na założeniu, że takie konflikty są bardzo rzadkie.

Zalecany przepływ pracy

Zasoby zwykle nie istnieją w odosobnieniu, lecz są jawnie lub niejawnie zależne od innych zasobów.  Na przykład strony WWW zawierają odsyłacze do innych stron WWW, a kod źródłowy zawiera odwołania do artefaktów opisanych w innych zasobach kodu źródłowego.  Żaden zasób nie jest "samotną wyspą".

Zatwierdzenie zasobów do rozgałęzienia może wpłynąć na te zależności. Zapewnienie integralności tych zależności jest dość istotne, ponieważ rozgałęzienie reprezentuje bieżący stan projektu: w każdej chwili jakiś członek zespołu może posłużyć się treścią rozgałęzienia jako punktem wyjścia dla nowej pracy.

Dlatego idealnym przepływem pracy jest taki, w którym jest zachowywana integralność rozgałęzienia.

Idealny przepływ pracy w punktach

Idealny przepływ pracy odbywa się następująco:

  1. Zacznij na nowo. Przed przystąpieniem do pracy zaktualizuj zasoby w obszarze roboczym stosownie do bieżącego stanu rozgałęzienia. Jeśli masz pewność, że lokalnie nie przechowujesz żadnych danych, które mogłyby się przydać, najlepiej wybrać interesujące projekty z rozgałęzienia (HEAD) i wybrać opcję Pobierz (lub Zastąp > najnowszymi z repozytorium, jeśli projekty te już istnieją lokalnie). Spowoduje to zastąpienie zasobów lokalnych zasobami z rozgałęzienia.

  2. Wprowadź zmiany. Pracuj lokalnie w swoim środowisku roboczym: twórz nowe zasoby, modyfikuj te, które już istnieją, i zapisuj wszystko lokalnie w miarę postępów pracy.

  3. Zsynchronizuj. Gdy wyniki pracy będą gotowe do zatwierdzenia, zsynchronizuj je z repozytorium.

    1. Zaktualizuj. Sprawdź zmiany przychodzące i dodaj je do lokalnego środowiska roboczego. W ten sposób można ustalić, czy któraś z tych zmian może naruszyć integralność zmian, które zamierzasz zatwierdzić. Rozwiąż konflikty. Ponownie przetestuj zmiany, wykonaj procedury sprawdzania integralności (na przykład sprawdź pliki pod kątem niepoprawnych odsyłaczy hipertekstowych, upewnij się, że kod można skompilować itp.).

    2. Zatwierdź. Teraz, gdy już masz pewność, że wprowadzone zmiany można z powodzeniem zintegrować z najnowszą treścią rozgałęzienia, zatwierdź je do rozgałęzienia. Rozsądek nakazuje powtórzenie powyższych kroków, jeśli pojawiły się nowe zmiany przychodzące.

Oczywiście to jest idealny przepływ pracy. Czasem, gdy istnieje pewność, że zmiany przychodzące nie będą mieć wpływu na zatwierdzane wyniki prac, można spróbować zatwierdzić je bez aktualizacji. Jednak zazwyczaj warto realizować przepływ podobny do opisanego wyżej, aby integralność rozgałęzienia nie została przypadkowo utracona. 

Więcej informacji o systemie CVS można znaleźć pod adresem https://www.cvshome.org.

Pojęcia pokrewne
Repozytoria CVS
Rozgałęzienia
Wersje
Synchronizowanie z repozytorium CVS

Czynności pokrewne
Tworzenie położenia repozytorium CVS

Pobieranie projektu z repozytorium CVS
 
Zastępowanie zasobów w środowisku roboczym

Współużytkowanie nowego projektu przy użyciu systemu CVS

Synchronizowanie z repozytorium

Aktualizowanie

Rozwiązywanie konfliktów

Scalanie rozgałęzienia

Zatwierdzanie

Informacje pokrewne
System CVS