Git

Kohteesta Wikipedia
Siirry navigaatioon Siirry hakuun
Git
Git-logo.svg
Git session.svg
Luoja Linus Torvalds
Kehittäjä Linus Torvalds,
Junio Hamano
Kehityshistoria
Julkaistu 7. huhtikuuta 2005
Vakaa versio 2.19.0 [1] / 10. syyskuuta 2018
Kehitystilanne Aktiivinen
Tiedot
Ohjelmistotyyppi Versionhallinta
Alusta Linux, macOS, POSIX, Solaris, Windows
Ohjelmointikielet C, Bourne Shell, Perl, TCL[2]
Lisenssi GPLv 2,[3] LGPL
Aiheesta muualla
Verkkosivu git-scm.com

Git on versionhallintaohjelmisto, joka on suunniteltu toimimaan hajautetusti ja mahdollisimman tehokkaasti.

Git on suunniteltu POSIX-yhteensopiville käyttöjärjestelmille (mukaan lukien Linux ja macOS). Se toimii myös Microsoft Windowsilla; virallinen asennuspaketti perustuu MinGW MSYSiin ja sisältää myös tyypillisiä POSIX-ympäristöjen apuohjelmia, kuten Bash-komentotulkin ja OpenSSH-asiakasohjelman. Git voidaan asentaa Windowsiin myös Cygwin-järjestelmän osana. Unix-suunnittelufilosofian mukaisesti Git ei ole yksittäinen sovellusohjelma, vaan koostuu suuresta joukosta pienempiä sovelluksia, joista kukin toteuttaa yksittäisiä toimintoja.

Gitin kaltaisia, avoimen lähdekoodin hajautettuja versionhallintajärjestelmiä ovat myös Mercurial ja GNU Bazaar.

Historia[muokkaa | muokkaa wikitekstiä]

Linux-ytimen versionhallinta oli toteutettu vuonna 2002 käyttöön otetun suljetun BitKeeper-ohjelmiston avulla.[4] BitMover, Inc., joka kehitti BitKeeperiä, antoi ohjelman ilmaiseen käyttöön avoimen lähdekoodin projekteille. Vuonna 2005 tämä kuitenkin lopetettiin, joten Linus Torvalds kirjoitti oman hajautetun versionhallintajärjestelmän BitKeeperin korvaajaksi, koska Linux-ytimen kehitystiimin tarpeet täyttävää avoimen lähdekoodin järjestelmää ei ollut olemassa.

”Git” tarkoittaa brittiläisessä slangissa ”ääliötä”; Linus Torvalds sanoi ”Olen itsekeskeinen paskiainen, joten nimeän kaikki projektit itseni mukaan. Ensin Linux, nyt git.” (”I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.”). Kehityksen alkuvaiheissa nimeä kuvailtiin seuraavasti:[5]

»Linus Torvalds nimesi ohjelmiston ”gitiksi” kun hän loi ensimmäisen version. Hänen mukaansa kyseessä on ”tyhmä sisällönseurantaohjelmisto”, jota voidaan kuvailla mieltymysten mukaan:

  • Satunnainen äännettävissä oleva kolmikirjaiminen nimi, jota olemassa oleva Unix-ohjelma ei käytä. Se, että se voidaan virheellisesti lausua kuten ”get”, on ehkä asiaan kuuluvaa.
  • Tyhmä. Halveksittava ja kamala. Yksinkertainen. Valitse suosikkisi slangisanakirjasta.
  • ”Globaali Informaatio-Trakkeri”: Kun olet hyvillä mielin ja se sattuu toimimaan. Enkelikuoro laulaa ja valo täyttää huoneen.
  • ”Goddamn Idiotic Truckload of sh*t”: Kun se ei toimi.»

Gitin nykyinen ylläpitäjä on Junio Hamano.

Ars Technican mukaan Microsoft käyttää nykyisin Gitiä Windowsin lähdekoodien hallintaan.[6]

Erityisominaisuudet[muokkaa | muokkaa wikitekstiä]

Gitin suunniteltiin olemaan mahdollisimman nopea (Linux-ytimeen tulee valtava määrä muutoksia), tukemaan hajautettua työskentelyä, ja estämään datan virheellisyys sekä katoaminen. Sen oli myös kyettävä hallitsemaan Linuxin valtavaa kokoluokkaa, toisin kuin monet muut järjestelmät, jotka eivät skaalaudu isojen hakemistopuiden hallintaan. Git suunniteltiin myös eri kehityshaarojen tehokkaaseen ja helppoon hyödyntämiseen. Käyttöliittymänsä puolesta Git on suunniteltu Unixin periaatteiden mukaiseksi ”työkalusarjaksi”; Git on oikeastaan joukko ohjelmia, joista kukin tekee yhden tietyn asian hyvin.

Tiedostojen uudelleennimeäminen Gitissä on ns. implisiittistä (eksplisiittisen sijaan). CVS:n yleisenä heikkoutena pidetään sen tapaa tunnistaa koko päivityshistoria tiedoston nimen mukaan, jolloin tiedoston siirtäminen tai uudelleennimeäminen ei ole mahdollista joko keskeyttämättä tai uudelleennimeämättä sen historiaa, tehden siitä virheellistä. Useimmat uudemmat versionhallintajärjestelmät antavat tiedostoille oman pysyvän nimensä (vähän kuin tiedostojärjestelmistä tutun inoden). Git ei käytä tämänkaltaisia tunnisteita,[7][8] sillä koodia joudutaan välillä paloittelemaan tai yhdistelemään uudelleennimeämisen lisäksi.[9] Tämän ylöskirjaaminen pelkkänä uudelleennimeämisenä jäädyttäisi historian jälleen virheelliseksi, mistä johtuen Git tunnistaa uudelleennimeämiset automaattisesti tallennehistoriaa selaamalla sen sijaan, että se kirjattaisiin jo tallennushetkellä.[10] (Yksinkertaistettuna version N jokin tiedosto on uudempi kuin N-1:n. Kun N-1:stä ei löydy kyseisen nimistä tiedostoa, Git etsii tiedostoa joka löytyy vain tästä versiosta, ja on sisällöltään mahdollisimman samanlainen uudempaan verrattuna.) Tämä vaatii kuitenkin luonnollisesti enemmän säikeitä (kuormittaen siten prosessoria) sekä monenlaisia asetuksia kontrolloimaan heuristiikkaa.

Gitin on myös päätetty olevan seuraamatta tyhjiä hakemistoja. Tästä syystä pelkkien hakemistojen seuraamiseen on kansioon luotava aina vähintään yksi tyhjä tiedosto (esim. .gitignore).[11]

GVFS[muokkaa | muokkaa wikitekstiä]

Microsoft on julkaissut Git Virtual File System (GVFS) -projektin laajojen projektien hallintaan.[12][13] GVFS mahdollistaa osan lähdekoodeista näkyvän virtuaalisesti osana repositorya varsinaisen latauksen tapahtuessa kun tiedostoa tarvitsee käsitellä.[12]

SHA-1[muokkaa | muokkaa wikitekstiä]

Git käyttää nykyisin SHA-1-tiivistefunktiota tiedostojen seurantaan.[14] Siirtyminen uudempaan standardiin on työn alla.[14]

Ohjelmistotuki[muokkaa | muokkaa wikitekstiä]

Microsoftin Visual Studio -kehitysympäristössä on tuki Git-versionhallinnalle.[15]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Releases · git/git · GitHub github.com. Viitattu 4.10.2018.
  2. git github.com. Viitattu 27.2.2017.
  3. Linus Torvalds: License github.com. 17.1.2010. Viitattu 16.2.2015. (englanniksi)
  4. A Git Origin Story 27.7.2018. Linux Journal.
  5. Initial revision of "git", the information manager from hell · git/git@e83c516 github.com. Arkistoitu 8 October 2017. Viitattu 21.1.2016.
  6. Microsoft hosts the Windows source in a monstrous 300GB Git repository Ars Technica. Viitattu 21.2.2017.
  7. Re: impure renames / history tracking marc.info.
  8. Re: Errors GITtifying GCC and Binutils marc.info.
  9. Re: Errors GITtifying GCC and Binutils marc.info.
  10. Re: git and bzr, on using git-blame to show code moved between source files marc.info.
  11. How do I add an empty directory to a git repository stackoverflow.com.
  12. a b Microsoft Announces Git Virtual File-System (GVFS) phoronix.com. Viitattu 27.2.2017.
  13. Announcing GVFS (Git Virtual File System) Microsoft. Viitattu 27.2.2017.
  14. a b Torvalds, Linus: I thought I'd write an update on git and SHA1.. plus.google.com. Viitattu 27.2.2017.
  15. DevOps - Commit to Git: Source Control in Visual Studio 2015 Microsoft. Viitattu 27.2.2017.

Katso myös[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]