Systemy kontroli wersji

Czym jest system kontrol wersji?

Systemem Kontrol Wersji jest repozytorium plików, zazwyczaj plików kodu źródłowego programów komputerowych, z kontrolą dostępu. Każda zmiana wykonana na kodzie źródłowym jest śledzona razem z tym kto zrobił tą zmianę, dlaczego ją zrobił oraz adnotacjami do naprawionych problemów albo wprowadzonych ulepszeń. Systemy kontroli wersji są niezbędne dla wszelkich form współpracy nad rozwojem oprogramowania

Śledzenie wersji

Jak porównać kod programu z dnia dziejszego z jego stanem rok temu? Dzięki temu że systemy kontroli wersji śledzą każdą nawet najmniejszą zmianę takie porównanie staje się łatwe. Wiedząc kto, kiedy i dlaczego wprowadził jaką zmianę można także z dużą łatwością prześledzić kiedy zaczął się pojawiać jaki błąd. Wszelkie problemy jakie pojawiły się z powodu wprowadzonych zmian mogą także zostać cofnięte do poprzedniej ich wersji, co sprawia że nawet krytyczne błędy mogą być, chociażby tymczasowo, cofnięte i naprawione.

Koordynowanie zespołów

Rozwijanie programu jest zazwyczaj przeprowadzane przez zespoły skupione w jednym miejscu albo rozproszone. Kontrola wersji jest istotnym elementem koordynowania zmian wprowadzanych przez grupy programistów. Pozwala ona na wprowadzanie zmian jednemu użytkownikowi na jego kopii lokalnej, które następnie zostaną wprowadzone do kodu innych użytkowników. To pozwala wszystkim praocwać na tej samej wersji ale lokalnych kopiach kodu unikając ewentualnych blędów oraz konfliktów. W wypadku gdy dwoje użytkowników zmieni tę samą część kodu, t.j. konfliktu , są oni o tym powiadamiani co pozwala na szybkie rozwiązanie tego konfliktu.

Kontrola zawartości oraz monitorowanie.

Prowadzenie biznesu nieraz wymaga przeprowadzania należytej staranności. Co dokładnie jej podlega zależy od biznesu jaki się prowadzi ale w przypadku własności intelektualnej są to zazwyczaj prawa własności jej części składowych. System kontrol wersji zdecydowanie ułatwia ten proces pozwalając chociażby stworzyć listę osób które wniosły wkład w oprogramowanie oraz dowiedzieć się kto dokonał dokładnie których zmian i w jakim czasie.

System kontroli wersji dodatkowo ułatwia monitorowanie pracy. Automatycznie powiadamia on gdy zostały wprowadzon jakieś zmiany. Te notyfikacje wraz z logami dotyczącymi poszczególnych zmian pozwolą menadżerowi monitorować i sledzić wszelką aktywność związaną ze oprogramowaniem.

Kolejną zaletą systemu kontroli wersji jest to, że w przypadku wątpliwości oraz sporów odnoszących się do prawa własności nad poszczególnymi pomysłami mogą one pomóc ustalić pierwszeństwo.

Popularne systemy kontrol wersji.



Git jest obecnie najbardziej popularnym rozproszonym systemem kontroli wersji. Zaprojektowany i stworzony w 2005 roku przez deweloperów jądra Linuxa (w tym Linusa Torvaldsa) służył im do pracy nad jądrem Linuxa. Chociaż różnice pomiędzy Git-em a Mercurialem nie są znaczne jeśli chodzi o ich użytkowanie to różnią się sposóbem w jakim działają. W tym wypadku Git działa w bardziej skomplikowany, co za tym idzie mnie zrozumiały, sposób ale jego popularność sugeruje że dla jego użytkowników nie jest to problemem na tyle dużym aby z niego rezygnować a dodatkowe funkcjonalności potrafią być zdecydowanie przydatne.

Przydatne linki



Mercurial jest właściwie młodszym bratem Git-a. Pierwsza wersjia Mercuriala pojawiła się zaledwie 12 dni po Gitcie a jego autorem był Matt Mackall. Pierwotna idea za istnieniem Mercuriala była podobna do Gita: miało to być narzędzie do kontroli wersji jądra Linuxa. Zespół zajmujący się nim wybrał niestety Gita ale jego konkurent zyskał popularność i do dziś jest używany w wielu projektach. O jego sukcesie może też stanowić to, że używają go nawet takie korporacje jak Google czy Facebook. Jego podstawowe funkcjonalności są bardzo podobne do Git-a ale jest prostszy w obsłudze.

Przydatne linki



Subversion jest najbardziej popularnym scentralizowanym systemem kontrol wersji. Prace nad nim rozpoczęły się w 2000 roku więc jest starszy od swoich głównych konurentów. W 2009 roku został przyjęty jako potencjanly projekt Fundacji Apache, którym został już w 2010 roku. Główną różnicą pomiędzy scentralizowanym systemem kontroli wersji a rozproszonym, jest to że w scentralizowanym systemie wszystkie meta dane są trzymane tylko na centralnym serwerze (dla porównania, w rozproszonym systemie każda lokalna kopia pracownika trzyma także meta dane). Różnica wyboru pomiędzy scentralizowanym a rozproszonym sytemem wersji jest głównie kwestią filozofii. Scentralizowany system jest prostszy w użytkowaniu i wymaga wykonania mniejszej ilości akcji w codziennym użytkowaniu, za to nie daje on pewności posiadania wielu kopii meta danych co znacznie ułatwia przywrócenie projektu w wypadku awarii.

Przydatne linki