Git

A Wikipédiából, a szabad enciklopédiából
Git
Git-logo.svg
Gitweb.png

Fejlesztő Linus Torvalds,Junio Hamano
Első kiadás 2005. április 7.
Legfrissebb stabil kiadás 1.8.2 (2013. március 13.) [1] +/-
Legfrissebb fejlesztői kiadás ismeretlen +/-
Programozási nyelv C
Unix rendszerhéj
Perl
Tcl
bash
Operációs rendszer Linux
Microsoft Windows
Mac OS
Solaris
Kategória Verziókezelés
Licenc GNU General Public License
A Git weboldala

A Git egy nyílt forráskódú, elosztott verziókezelő szoftver, vagy másképpen egy szoftver forráskód kezelő rendszer, amely a sebességre helyezi a hangsúlyt. A Gitet eredetileg Linus Torvalds fejlesztette ki a Linux kernel fejlesztéséhez. Minden Git munkamásolat egy teljes értékű repository teljes verziótörténettel és teljes revíziókövetési lehetőséggel, amely nem függ a hálózat elérésétől vagy központi szervertől. Számos nagy volumenű projekt használja jelenleg a Gitet verziókezelő rendszerként; a legfontosabbak ezek közül: Linux-rendszermag, GNOME, Samba, X.org, Qt, One Laptop per Child core development, VLC media player, WINE, Ruby on Rails és az Android platform.[2] A Git karbantartásának felügyeletét jelenleg Junio Hamano látja el.

Elnevezés[szerkesztés | forrásszöveg szerkesztése]

A „git” nevet Linus Torvalds némi iróniával a brit-angol szlengszavából eredezteti, ami ostoba vagy kellemetlen személyt jelent. „Egy egoista szemetláda vagyok, és minden projectemet magam után nevezem el. Először volt a Linux és most a git.” Ez az önmarcangoló humor valójában csak fikció, hiszen Torvalds valójában külső nyomásra nevezte el a Linuxot maga után. A hivatalos Git wiki számos magyarázatot ad az elnevezésre, mint pl. "Global Information Tracker" (globális információkövető).[3]

Jellemzők[szerkesztés | forrásszöveg szerkesztése]

A Git rendszerét a BitKeeper és a Monotone ihlette. Eredetileg egy alacsony szintű verziókövető rendszernek tervezték, amelyen olyan rendszerek ülnek, amelyek képesek egyfajta felhasználóbarát felületet nyújtani, mint pl. a Cogito vagy az StGIT. Mindazonáltal a Git projekt azóta teljes értékű revíziókövető rendszerré szélesedett, amelyet már közvetlenül is lehet használni. A Git felépítése, szintézise Torvalds tapasztalatának, a nagy, szétosztott fejlesztési projektekben, a fájlrendszerekben való jártasságának és egy működő rendszer mielőbbi felállítása igényének eredménye. Ezen okok vezettek végül a következő implementációs döntésekhez:

  • A nem-lineáris fejlesztés erős támogatása. A Git támogatja a branch-ok készítését, összefésülésüket, és tartalmaz eszközöket a nem-lineáris fejlesztési történet ábrázolására. Az alapelgondolás ugyanis az, hogy a Gitben egy változást többször kell összefésülésni, mint írni.
  • Elosztott fejlesztés. Hasonlóan a Darcs, BitKeeper, Mercurial, SVK, Bazaar és Monotone rendszerekhez, a Git minden fejlesztő helyi munkaváltozatában rendelkezésre bocsátja a teljes addigi fejlesztési történetet, és a változtatások másolása mindig két repository között történik. Ezeket a változtatásokat mint külön ágakat importálják és összefésülhetőek, hasonlóan a helyben létrehozott fejlesztési branch-okhoz.
  • A repository-k publikálhatóak HTTP-n, FTP-n és rsyncen keresztül, vagy a Git protokollt használva egy socketen vagy SSH-n keresztül is. A Git tartalmaz ezen felül egy CVS-szerveremulációt is, így a már meglévő CVS kliensek és IDE pluginok is képessé válnak a Git repository-k elérésére.
  • A Subversion és az svk repository-k közvetlenül használhatóak a git-svn híd segítségével.
  • Nagy objektumok hatékony használata. Torvalds a Gitet nagyon gyors és skálázható rendszerként mutatta be. A Mozilla által végzett teljesítménytesztek megmutatták, hogy legalább egy, de bizonyos műveletek esetén akár két nagyságrendnyi sebességfölénye is van minden más verziókövető rendszerhez képest.[4]
  • Kriptográfiailag hitelesített történet. A Git-történet olyan módon tárolódik, hogy a szóban forgó revízió neve függ a hozzá vezető fejlesztési történettől. Ha egyszer publikálták, akkor már nem lehetséges észrevétlenül megváltoztatni egy régi revíziót. A struktúra hasonlatos a hash-fához, de hozzáadott adatokkal az egyes csomópontokon és leveleken. (A Mercurial és a Monotone is rendelkezik ezzel a képességgel.)
  • Eszközkészlet-szerű megoldás. A Git maga C-ben írt programok halmaza, számos shell-szkripttel megtűzdelve, amelyek összefűzik ezeket a C-ben írt programokat. Annak ellenére, hogy a szkriptek többségét újraírták C-ben a Microsoft Windowsra való portolás eredményeként, a struktúra megmaradt, és továbbra is könnyű az egyes komponenseket láncba rendezni az igényeknek megfelelően.
  • Plugin-rendszerű összefésülési stratégiák. A eszközkészlet-struktúra részeként a Gitnek van egy jól definiált modellje a nem teljes összefésülésre, és számos algoritmusa befejezni azt. Amennyiben ezek az algoritmusok nem alkalmasak a feladatra, úgy a felhasználót értesíti az automatikus folyamat megszakításáról és kérni fogja a kézi szerkesztést.
  • A hulladék adatok felhalmozása, amennyiben nincs összegyűjtve. A műveletek megszakítása vagy a változtatások visszavonása használatlan kósza adatokat eredményez az adatbázisban. Ezek általában csak töredékét képezik a folyamatosan növekvő mennyiségű valós adatnak, de ezen tároló területek felszabadítása a git-gc --prune paranccsal meglehetősen lassú tud lenni.

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

Források[szerkesztés | forrásszöveg szerkesztése]