Git
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ás | 2005.04.07. |
Legfrissebb stabil kiadás | 2.47.1 (2021.06.04.) |
Programozási nyelv | |
Operációs rendszer | platformfüggetlen |
Kategória | Verziókezelés |
Licenc | GPL-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ésA „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ésA 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- ↑ Projects that use Git for their source code management. Archiválva 2009. április 30-i dátummal a Wayback Machine-ben (angolul)
- ↑ Why the 'git' name? Archiválva 2009. április 30-i dátummal a Wayback Machine-ben (angolul)
- ↑ bzr/hg/git performance Archiválva 2010. május 29-i dátummal a Wayback Machine-ben (angolul)