Git (oprogramowanie)

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
Git
Logo Git
Logo programu
Autor Junio Hamano, Linus Torvalds
System operacyjny POSIX, Windows
Język programowania C, Bourne Shell, Perl
Pierwsze wydanie 2005-04-077 kwietnia 2005
Aktualna wersja stabilna 2.19.1
(27 września 2018) [±]
Licencja GNU GPL v2
Rodzaj system kontroli wersji
Strona internetowa

Git – rozproszony system kontroli wersji. Stworzył go Linus Torvalds jako narzędzie wspomagające rozwój jądra Linux. Git stanowi wolne oprogramowanie i został opublikowany na licencji GNU GPL w wersji 2.

Pierwsza wersja narzędzia Git została wydana 7 kwietnia 2005 roku, by zastąpić poprzednio używany w rozwoju Linuksa, niebędący wolnym oprogramowaniem, system kontroli wersji BitKeeper.

Historia[edytuj | edytuj kod]

Prace nad Gitem rozpoczęły się po tym, jak BitKeeper, używany wtedy do rozwoju Linuksa, przestał być darmowy dla projektów o otwartym kodzie źródłowym. Torvalds szukał rozproszonego systemu kontroli wersji, który mógłby być użyty zamiast BitKeepera, głównymi kryteriami wyboru były:

  1. Wziąć przykład z CVS, czego nie robić.
  2. System powinien być rozproszony.
  3. System powinien być chroniony przed błędami w repozytorium (przypadkowymi, jak awaria twardego dysku, jak i złośliwymi, wprowadzonymi przez kogoś).
  4. System powinien być szybki.

Pierwsze dwa punkty wyeliminowały wszystko prócz Monotone'a, a czwarty punkt wyeliminował wszystko, więc Torvalds postanowił napisać własny system kontroli wersji.

Prace nad Gitem rozpoczęły się 3 kwietnia 2005 roku, projekt został ogłoszony 6 kwietnia, 7 kwietnia Git obsługiwał kontrolę wersji swojego własnego kodu, 18 kwietnia pierwszy raz wykonano łączenie kilku gałęzi kodu, 27 kwietnia Git został przetestowany pod względem szybkości z wynikiem 6,7 łat na sekundę, a 16 czerwca Linux 2.6.12 był hostowany przez Gita.

Najważniejsze cechy[edytuj | edytuj kod]

Dobre wsparcie dla rozgałęzionego procesu tworzenia oprogramowania: jest dostępnych kilka algorytmów łączenia zmian z dwóch gałęzi, a także możliwość dodawania własnych algorytmów[1].

Praca off-line: każdy programista posiada własną kopię repozytorium, do której może zapisywać zmiany bez połączenia z siecią; następnie zmiany mogą być wymieniane między lokalnymi repozytoriami.

Wsparcie dla istniejących protokołów sieciowych: dane można wymieniać przez HTTP(S), FTP, rsync, SSH.

Efektywna praca z dużymi projektami: system Git według zapewnień Torvaldsa, a także według testów fundacji Mozilla, jest o rzędy wielkości szybszy niż niektóre konkurencyjne rozwiązania[2][3].

Każda rewizja to obraz całego projektu: w przeciwieństwie do innych systemów kontroli wersji, Git nie zapamiętuje zmian między kolejnymi rewizjami, lecz kompletne obrazy. Z jednej strony wymaga to nieco więcej pracy aby porównać dwie rewizje, z drugiej jednak pozwala np. na automatyczną obsługę zmian nazw plików[4].

Projekty[edytuj | edytuj kod]

Wiele projektów używa Gita jako systemu kontroli wersji, zarówno nowo powstających, jak i migrują do niego z innego systemu kontroli wersji (np. CVS lub SVN). Do największych i najbardziej znanych projektów o otwartym źródle (a więc również posiadających dużo użytkowników i osób rozwijających oraz liczbę zmian) należy wymienić: jądro Linuksa oraz podprojekty z nim związane, a także GNU Hurd, GNOME, GTK+, GStreamer, KDE, GIMP, Perl, Qt, Ruby on Rails, Samba, Wine, Xfce, Xorg, jQuery, YUI, Erlang. Również część serwisów internetowych używa Gita do rozwijania swojego kodu (a część z niego jest publicznie dostępna), m.in. Reddit (otwarte źródła), Digg, Facebook.

Kilka systemów operacyjnych korzysta z Gita do zarządzania całą dystrybucją oraz dodatkowymi programami w nie wchodzącymi: Arch Linux, Android, Fedora, Maemo, MeeGo, OLPC XO-1, openSUSE oraz DragonFly BSD. Dystrybucje Debian[5] oraz Ubuntu używają Gita do rozwijania programów oraz zmian w programach zewnętrznych dla wielu (choć nie wszystkich) pakietów.

Wiele projektów używa innego systemu kontroli wersji, ale używa synchronizacji pomiędzy nim a Git, tak aby osoby chcące wykorzystywać większe możliwości Gita mogły go używać. Do przykładów należy projekt LLVM i clang (używają SVN).

Git server[edytuj | edytuj kod]

Jako rozproszony system kontroli wersji, Git nie wymaga odrębnej aplikacji serwerowej. Istnieją jednak pakiety rozszerzające oryginalne oprogramowanie, przede wszystkim o kontrolę dostępu, wsparcie dla zarządzania wieloma repozytoriami, czy interfejs WWW. Przykłady niektórych popularnych projektów to GitHub, BitBucket, GitLab, Git Daemon, Gitolite, Gerrit, Gitiles, Bonobo Git Server, Git Server.

Przenośność[edytuj | edytuj kod]

Git jest rozwijany dla systemu operacyjnego GNU/Linux, ale może być też używany na innych systemach operacyjnych bazujących na Uniksie, takich jak BSD czy Solaris. Oficjalny port na Windowsa używa Cygwina (emulatora środowiska POSIX), jednak jest on o wiele wolniejszy niż na systemach używających POSIX-a natywnie. Istnieją też porty natywne na Windows (używające MinGW) i są w fazie produkcji.

Kilka wieloplatformowych projektów zrezygnowało z używania Gita z powodu słabej obsługi Windowsa, przykładem może być Mozilla[potrzebny przypis].

Hosting[edytuj | edytuj kod]

Istnieje kilka serwisów hostingowych umożliwiających trzymanie repozytoriów gita, m.in Bitbucket, GitHub, GitLab, Gitorious i Stash.

Przypisy[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]