Projektowanie, Programowanie, Codzienność – BeniaminZaborski.com

3 Kwiecień 2012

Chcesz być Git?

Filed under: Codzienne dylematy modelarza — Tagi: , — Beniamin Zaborski @ 20:06

W tym poście chciałbym odnieść się do jakże popularnego ostatnio tematu rozproszonych systemów kontroli wersji. Jedne z najczęściej dziś wymienianych to oczywiście tytułowy Git, ale także Mercurial czy Bazaar. Na wstępie zaznaczę że to nie będzie typowy tutorial o Git-cie, a raczej moje luźne przemyślenia na jego temat.

Jako developer wychowany na scentralizowanych systemach kontroli wersji głównie SourceSafe czy SVN, nauczyłem się że nie należy od nich wymagać wiele (szczególnie od tego pierwszego). Stawiając poprzeczkę odpowiednio nisko wszystko było w porządku. Checkout działa, checkin działa – pełna radość!

Pomimo ogólnie panującego przekonania, że SourceSafe nie jest git udawało się jakoś z nim współpracować nawet z obszernymi projektami w kilkunastoosobowych zespołach. Wszystko się zmienia po dokładniejszym poznaniu Git-a. Jego możliwości wręcz oszałamiają, a do tego wszystkiego to po prostu działa.

Po pierwsze należy przyswoić to, że Git to system rozproszony. Co to właściwie oznacza? Mianowicie tyle, że nie ma jednego centralnego repozytorium, a jest ich wiele, dowolnie wiele… W praktyce oczywiście pewnie jedno z repozytoriów będzie pełnić rolę takiego „centralnego”, ale nikt na nim nie będzie bezpośrednio pracował. Być może będzie z niego pobierał źródła jakiś system continous integration aby wykonać builda wersji.

Idea „rozproszoności” opiera się na tym, że każdy z developerów przed przystąpieniem pracy tworzy sobie lokalnie kopię repozytorium. Uwaga jest to kopia zawierająca pełną historię. Ta operacja tworzenia lokalnej kopii według nomenklatury Git nazywana jest klonowaniem (clone). Następnie praca odbywa się na lokalnym repozytorium, łącznie z commitami które są robione również lokalnie. Przeniesienie zmian z repozytoriów lokalnych do „centralnego” wykonujemy za pomocą push. Typowy cykl pracy mógłby wyglądać tak:

1) Utworzenie repozytorium „centralnego”

git init

2) Utworzenie kopii lokalnych repozytoriów

git clone

3) Praca z plikami w repozytoriach lokalnych

git add .

4) Zatwierdzanie zmian w repozytoriach lokalnych

git commit

5) Przeniesienie zmian do repozytorium „centralnego”

git push

6) goto 3

Jednym z założeń autora Git-a tj. Linusa Torvaldsa było to aby ten system był szybki. Rzeczywiście jest. Co prawda wersja Windowsowa, która działa na emulowanym środowisku POSIX Cygwin jest nieco wolniejsza od tej *nix-owej, ale nie można jej niczego zarzucić pod kątem wydajnościowym.

Git-a klasycznie obsługujemy z linii komend. Wiem, że teraz wielu z Was powie, że to jakieś nieporozumienie. Moja pierwsza reakcja była podobna – ech co się ze mną dawnym *nix-owcem stało:). Uwierzcie mi, że obsługa Git-a nawet za pomocą linii komend jest naprawdę przyjemna! Dosyć intensywnie rozwijają się narzędzia do współpracy z Git-em. Już dziś mamy dobrze rozwinięty i stabilny TortoiseGit, który integruje się z powłoką Windows. Poza tym są dodatki do Visual Studio pozwalające cieszyć się Git-em w tym środowisku. Tu należy zwrócić uwagę na GitExtensions oraz Git Source Control Provider. Oba te dodatki może nie powalają swoim wyglądem, ale nadrabiają na pewno funkcjonalnością.

Nie wspomniałem jeszcze o wyśmienicie działającym tworzeniu rozgałęzień oraz ich łączeniu. To ogromna zaleta Git-a. Teraz już nie trzeba się tego bać. Można śmiało:

1) Utworzyć nową gałąź

git branch nazwa_gałęzi

2) Pracować z plikami

git add .

3) Zatwierdzać zmiany

git commit

4) Przełączać się między rozgałęzieniami

git branch master

5) Łączyć rozgałęzienia

git merge nazwa_gałęzi

 

Repozytorium „centralne” może znajdować się gdzieś w systemie plików na zdalnie udostępnionym zasobie, albo można do tych celów zainstalować dedykowany serwer. Jest ich kilka, obsługujących własny protokół git. Patrząc z punktu widzenia developera w systemach Windows ciekawe rozwiązanie jako serwer Git to Bonobo Git Server. To aplikacja ASP.NET MVC 3 hostowana na IIS. Instalacja jest szybka i bezproblemowa a do tego wygodny i prosty interfejs Web do zarządzania repozytoriami, użytkownikami, itp.

Polecam! Bądź Git!

About these ads

Dodaj komentarz »

Brak komentarzy.

Kanał RSS z komentarzami do tego wpisu. TrackBack URI

Dodaj komentarz

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

WordPress.com Logo

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Twitter picture

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

The Shocking Blue Green Theme. Blog na WordPress.com.

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.

%d bloggers like this: