Git

szoftverforráskód-kezelő rendszer

A Git egy nyílt forráskódú, elosztott verziókezelő szoftver, vagy másképpen egy szoftverforrá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.

Git

FejlesztőLinus Torvalds, Junio Hamano
Első kiadás2005.04.07.
Legfrissebb stabil kiadás2.44.0
(2021.06.04.)
Programozási nyelv
Operációs rendszerplatformfüggetlen
KategóriaVerziókezelés
LicencGPL-2.0
A Git weboldala

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, MediaWiki, VLC media player, Wine, Ruby on Rails és az Android platform.[1] A Git karbantartásának felügyeletét jelenleg Junio Hamano látja el.

Elnevezés szerkesztés

A „git” nevet Linus Torvalds némi iróniával a brit angol szleng kellemetlen személyt jelentő szavából eredezteti. „Egy egoista szemétláda vagyok, és minden projektemet 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ő).[2]

Jellemzők szerkesztés

A Git rendszerét a BitKeeper és a Monotone ihlette. Eredetileg alacsony szintű verziókövető rendszernek tervezték, amelyhez más programok adják a felhasználói felületet, 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.

Torvalds, aki jártas a nagy, elosztott fejlesztési projektekben és a fájlrendszerekben, és gyorsan akart működő rendszert fejleszteni, ezekre az elvekre alapozta a Gitet:

  • A nemlineáris fejlesztés erős támogatása. A Git támogatja a branchek készítését, összefésülésüket, és tartalmaz eszközöket a nemlineá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ülni, 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 branchokhoz.
  • A repositoryk 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 repositoryk 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.[3]
  • 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. Az 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éri 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

  1. Projects that use Git for their source code management. Archiválva 2009. április 30-i dátummal a Wayback Machine-ben (angolul)
  2. Why the 'git' name? Archiválva 2009. április 30-i dátummal a Wayback Machine-ben (angolul)
  3. bzr/hg/git performance Archiválva 2010. május 29-i dátummal a Wayback Machine-ben (angolul)

Források szerkesztés