Git — бесплатен, отворен и распределен систем за контрола на ревизии кој е мошне брз, ефикасно може да се употребува во големи проекти и содржи иновативен систем на гранење кој поддржува нелинеарен развој [2]. Една од главните карактерситики на Git е распределениот пристап кон контролата на преработки (верзии), при што клиентите не ги преземаат само најновите промени од централен опслужувач, туку тие месно прават целосен резервен примерок на скалдиштето (анг. repository). Тоа значи дека, доколку некој од опслужувачите е недостапен поради пад, било кој од клиентските складишта кои соработуваат на дадениот проект може да се искористи за опоравување на опслужувачот. Всушност, секое преземање (анг. checkout) на клиентот е целосен резервен прмерок на сите податоци од складиштето во месниот систем. За разлика од распределениот пристап, во централизираните системи за контрола на преработки како што се CVS и Subversion, постои централен опслужувач кој ги содржи сите преработки на податотеките, а клиентите прават преземање од тоа централно место. Главен недостаток на овие системи е тоа што опслужувачот претставува критична точка и во случај на пад корисниците не можат да соработуваат или да зачувуваат промени на податотеките со кои работат. Од таа гледна точка Git, преку распределениот пристап, едноставно ги надминува сите проблеми кои се јавуваат во централизираните системи, што го прави робусен систем за соработка.

Логото на Git
Екранска снимка
Седница со наредбени редови на која е прикажано создавање на складиште, додавање на податотека и оддалечено усогласување
Изворни авториЛинус Торвалдс
ПрограмериЏунио Хамано, Линус Торвалдс и многу други
Првично издание7 април 2005; пред 19 години (2005-04-07)
Прог. јазикC, Борнова лушпа, Tcl, Perl[1]
Опер. системLinux, POSIX, Windows, OS X
Видконтрола на преработки
ЛиценцаГНУ-ова општа јавна лиценца в2
Мреж. местоgit-scm.com

Особености

уреди

Значајна карактерситика на Git, како систем за контрола на преработки, претставува начинот на кој се претставуваат податоците. Концептуално, останатите системи, информациите за преработките ги чуваат како список на промени кои се направени врз секоја податотека во текот на времето. Односно, податоците престауваат множество на податотеки и промени врз тие податотеки. Во Git податоците се чуваат како множество од целосни слики (анг. snapshots) од сите податотеки (Git ја следи целосната содржина, наместо поединечи промени на податотеки). Секогаш кога се прави потврда (анг. commit) или се зачувува состојбата на проектот во Git, системот на некој начин прави слика од тоа како изгледаат сите податотекти во моментот и зачувува референца кон таа слика. Притоа, за поголема ефикасност, доколку одредени податотеки не се променети, Git не ги зачувува повторно, туку само зачувува врска кон претходната идентична податотека која претставува дел од претходната преработка.

Бидјеќи Git прави меснен примерок на целото складиште, при работа на развивачите не е потребна врска кон некој друг компјутер или мрежа. Поради тоа, при работењето на заеднички проект голем дел од стандардните операции се извршуваат неверојатно брзо бидејќи целосната историја на складиштето се чува месно. Притоа, може едноставно да се прегледуваат разликите помеѓу одредени преработки на проектот, или пак да се работи на нови функионалности кои месно се додаваат. Всушност, ова својство е уникатно за Git бидејќи им овозможува на корисниците да работат и во случај на недостапност на мрежната врска, а сите промени да бидат прикачени подоцна кога истата ќе стане достапна.

Гранењето и спојувањето претставуваат особено важна одлика што значајно го издвојува Git од останатите системи за управување со изворен код. Git ја овозможува и охрабрува употребата на повеќе месни гранки до кои се пристапува целосно независно. Притоа, создавањето, спојувањето и бришењето во Git е доста брзо и трае само неколку секунди. Тоа овозможува создавање на гранки за испробување на одредена идеја, тестирање и додадавње на нови функционалности, без да постои какво било влијание врз главната линија на развој во проектот. Исто така, создавање на гранки кои содржат продукциски код и едноставно менување на контекстот на работа помеѓу подобрување, тестирање, или експериментирање. При спојување, можат експлицитно да се изберат гранките кои ќе се споделат, што им овозможува на членовите од тимот месно да испробуваат идеи без да се грижат како и кога ќе можат тие новини да се спојат со главната линија на развој.

Главните предности на Git претставуват распределениот пристап кон контролата на ревизии (што го прави доверлив во случај на падови на делови од системот), малите памтилни побарувања и брзината на извршување, иновативниот пристап на гранење и соединување (кој обезбедува ефикасно работење на поединечно и групно ниво), сцената (анг. staging area) која нуди дополнително ниво на флексибилност и безбедност пред потврдување на одредени промени, како и фактот што Git е целосно бесплатен со отворен код и може да се употребува во отворени и во комерцијални проекти. Особено позитивна претставува резенц однос peer-to-peer меѓу развивачите што ја поедноставува соработката бидејќи не наметнува хиерархиска структура, и во процесот на развој воведува поголема координација и соработка на учесниците.

Начин на работа

уреди

Податотеките кои се дел од даден проект можат да бидат во три главни состојби во Git, и тоа: потврдени (анг. committed), изменети (анг. modified) и подготвени (анг. staged) [3][4]. Потврдени значи дека податоците се безбедно зачувани во месна база на податоци. Изменети значи дека одредена податотека е изменета, но тие измени не се запишани во месната база на податоци. Подготвени, значи дека изменетата податотека во тековната преработка од проектот е означена да биде запишана при следната потврда (анг. commit). Овие состојби всушност ги дефнираат трите главни делови во еден Git проект: Git именик, работен именик (анг. working directory) и сцена (анг. staging area).

Git именикот е местот каде што Git ги зачувува мета-податоците и објектната база на податоци од дадениот развоен проект. Овој именик претставува најважниот дел од Git, и е именкиот кој се копира при преземање на одредено складиште од еден во друг компјутер. Работниот именик претставува единствено преземање (анг. checkout) на една преработка на проектот. Овие податотеки се повлекуваат од компресираната база на податои од Git именикот и се зачувуваат на месниот диск за употреба или изменување. Сцената (анг. staging area) не е ништо повеќе од обична податотека, која најчесто е дел од Git именикот, и која содржи информации за тоа што влегува во следното потврдување (анг. commit).

Основниот тек на работа наједноставно може да се опише преку следните чекори:

  1. Корисникот изменува податотеки од работниот именик
  2. Податотеките се означуваат како подготвени, и се додава запис за нив во сцената
  3. Се врши потврда (анг. commit), која ги превезема сите податотеки од сцената и перманентно ја зачувува сликата (анг. snapshot) во Git именикот.

Сите податотеки од работниот именик дополнително можат да бидат во една од две состојби: следени (анг. tracked) и не-следени (анг. untracked). Следените податотеки се оние кои биле дел од претходната слика (анг. snapshot), и тие можат да бидат: не-изменети, изменети и потдогвени (анг. staged). Не-следените податотеки означуваат податотеки од работниот именик кои не биле дел од претходната слика и не се дел од сцената. При првото преземање на одредено складиште, сите податотеки се означуваат како следени и не-изменети. Како што се работи со податотеките, Git започнува да ги разграничува како изменти, оние кои се различни во однос на претходната потврда. Откатко ќе бидат означени како подготвени и ќе се изврши потврда (што ги запишува сите промени), циклусот се повторува.

Поврзано

уреди

Наводи

уреди
  1. „git/git.git/tree“. git.kernel.org. Посетено на 2009-06-15.[мртва врска]
  2. Git — официјална страница
  3. Scott Chacon: Pro Git, Apress, 2009
  4. http://git-scm.com/book Pro Git eBook