Git (oprogramowanie)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Git
system kontroli wersji
Git-logo.svg
Logo programu
Producent Junio Hamano, Linus Torvalds
System operacyjny POSIX, Windows
Napisane w C, Bourne Shell, Perl
Pierwsze wydanie 2005-04-077 kwietnia 2005
Aktualna wersja stabilna 2.1.0 / 15 sierpnia 2014[1]
Licencja GNU GPL v2
git-scm.com

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żna dodawać własne algorytmy.[2]

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.[3][4]

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.[5]

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 ilość 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[6] 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 (oba używają SVN oficjalnie).

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 Git Daemon, Gitolite, Gerrit, Gitiles, Bonobo, 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ładami mogą być Mozilla i Ruby[potrzebne źródło].

Hosting[edytuj | edytuj kod]

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

Przypisy

Linki zewnętrzne[edytuj | edytuj kod]