Version People Control System

Wybór mechanizmu kontroli wersji i repozytorium kodu dla projektu jest zagadnieniem niebanalnym. Dostępne narzędzia VCS różnią się zarówno wymaganiami jak i możliwościami. Wybór między VSS, CVS czy innym Subversion to dla jednych zagadnienie wyboru platformy lepszej i stabilniejszej, dla innych wybór najwygodniejszego narzędzia, a dla wielu pewnie wybór czysto ideologiczny. Jednak w przypadku VCS wybór narzędzia „najbardziej odpowiedniego” nie zawsze jest wyborem „lepszej” technologii..

wada zaletą?

Paradoksalnie największa wada VSS-a jest często jego największą zaletą. „Exclusive checkout”, czyli możliwość pobrania z repozytorium do edycji danego pliku tylko przez jedną osobę równocześnie, może być upierdliwością ale i błogosławieństwem. Wszystko zależy oczywiście od ludzi i kultury organizacji/zarządzania[1].

Jeżeli programiści, że tak powiem lekko wulgaryzując problem, myślą, to mechanizm merge dostępny w CVS plus rozwiązywanie ewentualnych konfliktów stanowi dla nich potężne narzędzie (współ)pracy. Jeden drugiemu nie blokuje źródeł, a wszystkie zmiany są elegancko „sklejane” w spójną całość. Jeżeli równocześnie ktoś prowadzi sensowny przydział zadań, to konflikty powodowane równoczesną zmianą tego samego kodu praktycznie się nie zdarzają.

Niestety widziałem zbyt wiele przypadków, w których programiści nie myślą (a w każdym razie nie więcej niż np. mój kot Maurycy), pliki źródłowe są źle zorganizowane, a przydział zadań do wykonania jest łagodnie mówiąc chaotyczny. W takiej sytuacji pozwolenie różnym osobom na równoczesną zmianę tego samego pliku źródłowego to krok wręcz samobójczy.

Przykładowo: uczestniczyłem niedawno (z doskoku) w projekcie, w którym wykorzystanie CVS-a zostało wymuszone zassaniem tymczasowych uczestników z różnych stron Polski. Koleżanka[2]nie chcąc tworzyć kolizji” w metodzie, którą musiała równolegle ze mną zmienić, napisała nową, w 95% identyczną(!). Oczywiście ja nie raczyłem się zainteresować nową metodą, bo i nie miałem po temu najmniejszego powodu, więc dalej wykonywałem zmiany w „moim”[3] kodzie. Do momentu gdy zauważyłem, że ta metoda już nie jest wywoływana i zamiast niej funkcjonuje jakaś hybryda mojej starej wersji i jej zmian. Kilka godzin to odkręcałem... Dało się tej kaszany uniknąć? Oczywiście. Dało się to zrobić w CVS? Jak najbardziej. Ale czyż nie byłoby łatwiej, gdyby tylko jedna osoba miała dostęp do tego pliku w danej chwili..? Łatwiej nie w sensie technicznym, tylko socjologicznym[1 ponownie] — zabrakło tutaj jasnego komunikatu „nie ruszaj dopóki ja nie skończę, bo namieszasz i zepsujesz”.

Bywają zespoły, w których taki komunikat jest niezbędny...

[1] Pamiętasz? Polityka, ludzie, technologie, narzędzia — zawsze w takiej kolejności.

[2] Nie chciałbym tym sugerować, że nie ma dobrych kobiet w zawodzie „programista”. Pewnie są...

...and she probably lives in Tahiti
or maybe in the Bahamas
where the Caribbean sea is blue...

czy jakoś tak to szło ;-)

[3] Moim-nie-moim. Przecież tak w ogóle to „to nie moje”..

Komentarze

Brak komentarzy do tego wpisu.

 

Uwaga: Ze względu na bardzo intensywną działalność spambotów komentowanie zostało wyłączone po 60 dniach od opublikowania wpisu. Jeżeli faktycznie chcesz jeszcze skomentować skorzystaj ze strony kontaktowej.