**Git** on vaba hajutatud versioonihaldustarkvara, mille lõi 2005. aastal Linus Torvalds Linuxi tuuma arendamiseks. Kuigi Git on enamjaolt serveripõhine, saab seda kasutada ka ilma võrguta arvutis kohalikuks versioonihalduseks. Praegu haldab Giti arengut Junio Harmano.

Git toimib läbi selle, et jaotab versioonid ühe kausta sisse, mida tuntakse ka repositooriumina (ingl k *repository*). Iga selline kaust omab täielikku andmeid oma ajaloost ja versioonihaldusvõimalust.

Ajalugu
-------

Giti arendust alustas soomlasest tarkvaraarendaja Linus Torvalds 3. aprillil 2005, et lihtsustada koostööd Linuxi arendamisel. Git on alates 7. aprillist 2005 serverivormis iseseisvalt üleval ning 16. aprillil 2005 tehti esimene muudatus, millele eelnenud seisu oli võimalik tarkvara abil taastada.

Alates 26. juulist 2005 on Giti peamine haldaja ja ülalpidaja Junio Harmano, kes avalikustas ka Git 1.0.0 versiooni.

Disain
------

Kuigi Giti disain on inspireeritud teistest versioonihaldustarkvaradest, ei olnud varasemad sellised tarkvarad sobilikud Linus Torvaldsi jaoks ning ta valmistas võrdlemisi omanäolise tarkvara.

Gitil on palju omadusi, mis teevad selle kasulikuks mitmetele arvuti kasutajatele. Põhjused, miks paljud arvuti kasutajad kasutavad just Giti, võivad olla järgmised: 

* see võimaldab ühtset pilvepõhist asukohta, kus hoida oma koodi;
* ühest projektist on võimalik teha harusid ning neid hiljem liita või kustutada;
* meeskonnatöö projekti kallal võimaldab igaühel muuta korraga projektis erinevaid faile;
* olles avatud lähtekoodiga, peetakse seda töökindlaks tarkvaraks;
* versioonihaldus annab võimaluse näha, kuidas projekt on arenenud;
* kuna mitmed veebipõhised Giti keskkonnad võimaldavad avalikke projekte, saab oma oskusi näidata.

Giti kasutamine
---------------

Kuigi Gitti on arendatud peamiselt Linuxil, on see saadaval ka teistele operatsioonisüsteemidele nagu Windows ja mac OS X.

On olemas ka erinevad Giti teostused, mis toimivad mõnel kindlal programmeerimiskeelel. Näiteks JGit on Java teek, go-git on Go keelel põhinev Giti versioon, Dulwich põhineb Pythonil ning JS-Git on JavaScriptil põhinev Giti alamklassi teostus. Giti olemasolu erinevatel platvormidel ning õpetuste olemasolu veebis teeb Giti kasutamise ja Giti õppimise lihtsaks kõigile, kes on huvitatud. Sama lihtsalt saab süsteemi olemasolul valmis teha ka enda Giti serveri, Linuxi operatsioonisüsteemis saab seda teha tunni jooksul.

Giti kasutavad sellised suured ettevõtted ja projektid nagu Google, Facebook, Microsoft, Twitter, Linkedin, Netflix, Perl5, Android, Linux, Eclipse.

Gitil toimiv suurim teenus on GitHub, kus on enam kui 33 miljonit kasutajat.

Git riistvaraliselt
-------------------

### Nõuded Giti kasutamiseks

Nõuded Giti serveri kasutamiseks võivad erineda olenevalt näiteks eelistatud meediavormingust ja internetiühenduse kiirusest. Kui on soovi reaalajas ümber kodeerida faile, on nõuded suuremad. 

#### Miinimumnõuded

* Intel Core 2 Duo protsessor 1,6 GHz või parem;
* Windows operatsioonisüsteemi puhul vähemalt 1 Gb RAM;
* Linux operatsioonisüsteemi puhul vähemalt 512 Mb RAM;
* Operatsioonisüsteemilt:
	+ Windows Vista või uuem,
	+ OS X-i puhul Snow Leopard 10.6.3 või uuem,
	+ Linuxi puhul Ubuntu, Debian, Fedora, CentOS või SuSE;
* Et kasutada internetipõhist Giti, peab olema internetiühendus.

#### Soovitatud seadistus

* Intel Core 2 Duo protsessor 2,4 GHz või parem;
* 2 Gb RAM;
* Operatsioonisüsteemilt:
	+ Windows Vista või uuem,
	+ OS X-i puhul Snow Leopard 10.6.3 või uuem,
	+ Linuxi puhul Ubuntu, Debian, Fedora, CentOS või SuSE;
* Et kasutada internetipõhist Giti, peab olema internetiühendus.

Vaja läheb kindlasti ka andmekandjat. Erinevatel Giti serveritel võivad olla erinevad nõuded.

Kuidas parem riistvara teeb Giti kasutamise paremaks
----------------------------------------------------

Soovitatuim operatsioonisüsteem Giti kasutamiseks on Linux, seal on seda kõige rohkem optimeeritud ja arendatud. Siiski, rohkem tähtis on riistvara valik. Giti puhul on tähtsamad CPU, muutmälu ja andmekandja.

### CPU ehk protsessori tähtsus

Tähtsaim on CPU puhul tuumade arv, see võimaldab serveri kasutajate arvu suurendada. Väiksemate projektide jaoks on soovitatud kas 2 või enam tuumaga protsessor, sest see toetab kuni 500 kasutajat ning taustal olevad tööd saavad ka süsteemi suurema aeglustamiseta tehtud. Suured Giti serverid kasutavad palju enamate tuumadega protsessoreid, kui kõik toimub ühe masina peal. Näiteks, 64-tuumaline protsessor toetab kuni 40 000 kasutajat.

### Andmekandja tähtsus

Vajalik andmekandjate kogumaht oleneb peamiselt sellest, kui suurt mahtu kõik serveris olevad repositooriumid kokku võtavad. Arvestama aga peab, et üldjuhul on Gitis arendatavad projektid ning need aina suurenevad. Kui väikese kasutajahulgaga serveris on piisavalt mälu ning piisav protsessor, siis suurte projektide puhul jääb peamiseks pudelikaelaks andmekandjate otsinguajad. Kiire kõvaketta või SSD (pooljuhtketta) olemasolu kiirendab tööd märgatavalt. 

### Muutmälu tähtsus

Muutmälu tähtsust saab vaadata kahest nurgast, selle kiirusest ja selle mahust. Eelistatud on loomulikult suured ja kiired mälumoodulid. Kiirus aitab kaasa eriti väikeste projektide puhul, serverisse laadimine ja alla laadimine oleks justkui kohesed, kui repositooriumi maht ei ületa mälumahtu. Sellest tuleb ka välja, et mälu suurus on tähtis. Muutmälu suuruse tähtsusele lisab juurde veel ka see, et enamjaolt kasutavad Giti servereid mitmed kasutajad, mitte vaid üksikkasutaja.

Viited
------

1. 1 2  Junio C Harmano (21. detsember 2005). "E-kiri giti meililisti "[ANNOUNCE] GIT 1.0.0"".
2. ↑  "git/git.git/tree"[*alaline kõdulink*] git.kernel.org.
3. 1 2  Linus Torvalds (27. juuli 2005). "E-kiri giti meililisti "Meet the new maintainer.."".
4. ↑  Scott Chacon ja Ben Straub (2014). "Pro Git 2nd edition".
5. 1 2  Linus Torvalds (27. veebruar 2007). "E-kiri giti meililisti "Re: Trivia: When did git self-host?"".
6. ↑  TED (3. mai 2016). "The mind behind Linux | Linus Torvalds".
7. ↑  Linus Torvalds (5. mai 2006). "Re: [ANNOUNCE] Git wiki".
8. ↑  "Giti repo kernel.org lehel".
9. ↑  "Giti repo Githubis".
10. ↑  "Github".
11. ↑  "Bitbucket".
12. ↑  "Git allalaadimised".
13. ↑  Eclipse Foundation. "JGit leht Eclipse kodulehel".
14. ↑  "Go-git repo Github.com lehel".
15. ↑  "Dulwich repo Github.com lehel".
16. ↑  "JS-Git repo github.com lehel".
17. ↑  Swapnil Bhartiya (22. mai 2018). "How to run your own git server".
18. ↑  "Companies & Projects Using Git". Vaadatud 26. aprill 2019.
19. ↑  "GitHub kasutajad". Vaadatud 1. mai 2019.
20. 1 2 3  cayars. "System Requirements GitHub lehel".
21. 1 2 3 4  "Gitlab Hardware requirements".

Välislingid
-----------

* Google Tech Talk – Linus Torvalds on Git – video YouTube'is
* Learn the Basics of Git in Under 10 Minutes – ingliskeelne Giti aluste õpetus
* Github.com – üks populaarsemaid veebipõhiseid Giti keskkondi
* Bitbucket – üks populaarsemaid veebipõhiseid Giti keskkondi