Języki

Erudis - your road to knowledge
Jak działają systemy kontroli wersji?

W systemach kontroli wersji używa się kilku magicznych zwrotów. W zasadzie są one wspólne dla większości systemów. Ponieważ SKW są najczęściej w języku angielskim to prezentowane będą nazwy angielskie z polskim objaśnieniem.

  • Repository (repozytorium) – miejsce przechowywania plików w systemie kontroli wersji, niekoniecznie baza danych, często pewna specyficzna struktura katalogów z opisami.
  • Working copy (katalog roboczy) – miejsce w którym znajdują się kopie lokalne plików nad którymi pracujemy. Najczęściej katalog na naszym komputerze.
  • Get (pobranie) – pobranie plików z repozytorium np.: z serwera
  • Check-in (wstawienie) – gdy skończymy zmieniać pliki to wstawiamy je na serwer, tak aby każdy mógł je pobrać w najnowszej wersji
  • Check-out (wybranie) – pobranie plików z serwera z zamiarem zmiany. Może być związane z jednoczesną blokadą.
  • Lock (blokada) – zablokowanie innym użytkownikom możliwości wybrania.
  • Label (etykieta) – oznaczenie nazwą grupy plików w celu łatwej ich identyfikacji
  • Branch (gałąź) – stworzenie alternatywnej linii wersjonowania. Pozwala to na rozwój tego samego pliku w różnych kierunkach, np.: wprowadzanie poprawek do starej wersji i dodawanie funkcji do nowej wersji.
  • Merge (połączenie) – łączenie dwóch kopii pliku w jeden. Może się odnosić do dwóch sytuacji: łączenia gałęzi i rozwiązywania konfliktów.

Powyższe funkcje opisują podstawową funkcjonalność SKW.

Łatwo zauważyć, że opis funkcji Get i Check-out jest bardzo podobny. Zasadniczą różnicą jest to, że wykonanie funkcji Check-out zakłada chęć zmieniania plików.

Różnica ta zaczyna być istotna gdy chcemy korzystać z blokady. Blokada jest sposobem na uniknięcie sytuacji w której dwie osoby zmieniają ten sam plik. Jeżeli operacja Check-out zakłada blokadę na zmianę pliku to nikt inny nie może go wybrać ani wstawić (Check-in). Funkcjonalność taka jest niezbędna gdy edytujemy pliki binarne przechowywane w SKW.

Gdy edytujemy tekstowe pliki kodu źródłowego to blokada zazwyczaj nie jest konieczna. Jeżeli dwie osoby zmienią ten sam kod to później muszą połączyć swoje zmiany do nowej wersji. Korzystając z powyższej terminologii pracę z systemem kontroli wersji możemy opisać przez taki ciąg działań:

  1. Tworzymy repozytorium
  2. Dodajemy do niego pliki projektu
  3. Pobieramy (Get) pliki z repozytorium do katalogu roboczego
  4. Wybieramy (Check-out) pliki do edycji
  5. Zmieniamy to co potrzebujemy
  6. Sprawdzamy, że wszystko działa
  7. Wstawiamy (Check-in) zmienione pliki do repozytorium
    1. Jeżeli okaże się że ktoś zmienił plik, który wstawiamy to prawdopodobnie będziemy musieli połączyć (Merge) wersje.
  8. Jeżeli jeszcze coś jest do zrobienia to wracamy do punktu 4

Jak widać praca z SKW z punktu widzenia użytkownika na podstawowym poziomie jest bardzo prosta.