System kontroli wersji na przykładzie Gita

Wstęp

Wyobraźmy sobie sytuację, że piszemy jakiś spory program. Przy okazji rozwoju kodu źródłowego rośnie złożoność projektu, liczba plików i miejsc w których możemy popełnić błędy. Mimo wszelkim przeciwnościom udaje się nam wypuścić działającą wersję programu: v.1.0-RC-stable-full-megapack. Aplikacja działa i spotkała się ze sporym zainteresowaniem ze strony społeczności, więc zaczynamy rozwijać program.

Dodajemy kolejne funkcjonalności, pliki, klasy, metody i nagle stop. Wprowadzając poprawki w jednej części programu zauważamy, że przestaje działać funkcjonalność, która w wersji v.1.0-RC-stable-full-megapack działała. W którym miejscu szukać przyczyny? Zaczynać pisanie od nowa? Wśród początkujących (i niestety nie tylko) programistów można często spotkać zapisywanie kolejnych wersji działającego kodu kopiując zawartość katalogu do nowego pod inną nazwą.

Który to był teraz katalog...? Nowy folder, Nowszy folder, czy Nowy folder(2)?

Co sprytniejsi zapewne tagują nazwy katalogów datą, albo kolejnym numerem. Jednak to nie jest dobre rozwiązanie, a ten wpis powstaje po to, żeby wszystkich, którzy korzystają z podobnych rozwiązań odwieźć od tych diabelskich praktyk, bo jest to prymitywny system kontroli wersji z dużym prawdopodobieństwem wystąpienia pomyłki. W tej sytuacji o wiele lepiej skorzystać z narzędzia, które zostało do tego stworzone.

Gwoździe też można wbijać kombinerkami.

W tym wpisie będziemy się opierać o Gita - darmowy system kontroli wersji wypuszczony na licencji GPL2.

Sprostowanie

Od razu chciałbym napisać i poinformować, że wpisów, które tłumaczą jak działają systemy kontroli wersji jest dużo. Najbardziej wartościowe postaram się zamieścić na końcu tego wpisu. Jednak dużo ciężej znaleźć wpis, który by tłumaczył czym są systemy kontroli wersji i próbował przekonać ludzi nie korzystających z tego typu rozwiązań.

Co to jest system kontroli wersji?

Głównym zadaniem każdego systemu kontroli wersji jest śledzenie zmian w projekcie. Dzięki nim możemy zapisywać każdy etap prac nad danym kodem źródłowym i wrócić do interesującej nas wersji w dowolnym momencie. Zapisują daty, różnice między plikami, autorów i wiele innych przydatnych szczegółów.

W systemach kontroli wersji możemy trzymać każdy rodzaj plików, nie tylko kod źródłowy.

Jeżeli od razu dałeś się przekonać do systemów kontroli wersji, zapraszam do świetnej dokumentacji wprowadzającej do systemu kontroli wersji Git.

Czy jest mi potrzebny system kontroli wersji?

To pytanie najprawdopodobniej zadają sobie początkujący programiści, którzy mają na biurku obok komputera 15 ciężkich tomisk pełnych technicznej nomenklatury, które na nich czekają i gapią się przeszywającym wzrokiem przypominającym, że bez nich nie da się zacząć programować. A tutaj jeszcze gość pisze, że mam się uczyć jakichś systemów kontroli wersji. Bez obaw! Korzystanie z Gita jest banalnie proste i intuicyjne. Jeżeli nie wierzysz, to od razu przejdź do rozdziału Szybki, prosty start.

Kontrola wersji nie jest niezbędna w programowaniu, ale korzystanie z niej jest jedną z dobrych praktyk programowania, którą powinieneś w sobie wyrobić już na samym początku.

Wciąż nie dałeś się przekonać?

Kilka zalet

  1. Git ukrywa przed Tobą poprzednie wersje plików, tak że przed oczami masz jedynie wersję plików na których obecnie pracujesz. Jeżeli chcesz zobaczyć poprzednie wersje plików wystarczy jedno polecenie.
  2. Możesz łatwo trzymać kod na serwerze zewnętrznym na przykład w celu kopii zapasowej.
  3. Dzięki systemom kontroli wersji łatwo można zobaczyć różnice w dwóch wersjach programu.
  4. Możesz eksperymentować nad kodem nie bojąc się o uszkodzenie obecnie działającej wersji i wiele innych

Jeżeli jeszcze nie dałeś się przekonać, to pewnie zadajesz sobie pytanie: No świetnie, kontrola wersji swoją drogą, ale na moje potrzeby przecież nie jest potrzebny. Po co się uczyć nowego narzędzia i tracić na to czas? Bardzo dobrze mi wychodzi wbijanie gwoździ kombinerkami. Taki stan rzeczy mamy zapewne dlatego, że wydaje Ci się to bardzo skomplikowane narzędzie, które wymaga nie wiadomo jakich podstaw teoretycznych. Czytaj dalej, a przekonasz się, że tak nie jest.

Szybki, prosty start

W tej sekcji będę się opierał o interfejs konsolowy (CLI) w Linuksie, ale zapewniam, że na aplikacjach okienkowych Windowsa sprawa będzie równie prosta.

Instalacja

Po pobraniu i zainstalowaniu Gita jesteśmy gotowi, żeby rozpocząć z nim przygodę.

Git jest w repozytoriach każdej znanej dystrybucji Linuksa i w portach systemów BSD, więc instalacja Gita to jedno polecenie.

Jeżeli masz jeszcze problemy z instalacją odwiedź oficjalną dokumentację dotyczącą instalowania Gita.

Po pierwsze, tworzenie nowego repozytorium Gita

Żeby zacząć korzystać z kontroli wersji w katalogu z naszym kodem musimy do niego wejść i zainicjować nowe repozytorium Gita: $ cd superprojekt $ git init Initialized empty Git repository in /home/koder/devel/superprojekt  To wszystko, już możemy zacząć korzystać z dobrodziejstw systemu kontroli wersji. Dodaj sobie jakiś plik w tym katalogu i coś do niego napisz np.: $ touch index.html $ echo "Pierwsza wersja mojego kodu" > index.html

Po drugie: Gicie, obserwuj moje pliki

Musimy dać znać Gitowi, że w obecnym stanie chcemy zapisać wszystkie nasze pliki: git add *

Czas zapisać pierwszą działającą wersję kodu

Zrobiliśmy świetną funkcjonalność. Czas zapisać naszą pierwszą działającą wersję kodu: git commit -m "Świetna funkcjonalność"

Dalsza praca z Gitem

To wszystko czego potrzeba, żeby zapisywać swoje działające wersje kodu. Jeżeli jesteś zainteresowany bardziej zaawansowanymi funkcjami Gita, zapraszam do oficjalnej dokumentacji i innych poradników, których jest całkiem sporo.

Przydatne linki