Versioonihalduskeskkonnad GitHubi, GitLabi ja Bitbucketi näitel: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Svpetr (talk | contribs)
Ivmaeo (talk | contribs)
No edit summary
 
(19 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== '''Sissejuhatus''' ==
== '''Sissejuhatus''' ==


Versioonikontrolli [https://en.wikipedia.org/wiki/Version_control] kasutatakse erinevates keskkondades. Versioonihaldust võivad pidada tekstitöötlus programmid, tabelarvutusprogrammid, veebilehed, sisuhaldussüsteemid kui ka Wikipedia ise. Versioonihaldus võimaldab näha dokumendi vaheseisu kui ka tagasi pöörata dokumendi eelnevasse versiooni.
Versioonikontrolli <ref>https://en.wikipedia.org/wiki/Version_control</ref> kasutatakse erinevates keskkondades. Versioonihaldust võivad pidada tekstitöötlusprogrammid, tabelarvutusprogrammid, veebilehed, sisuhaldussüsteemid kui ka Wikipedia ise. Versioonihaldus võimaldab näha dokumendi vaheseisu kui ka tagasi pöörata dokumendi eelnevasse versiooni.


'''Versioonihaldus'''
'''Versioonihaldus'''


Iga arendaja puutub varem või hiljem kokku versioonihaldusega. Versioonihaldus võimaldab arendajal kirjutatud koodi versioneerida. On võimalik näha minevikus tehtud muudatusi, kes need muudatused tegi, miks tegi (põhjus koos kommentaaridega) ja millal need tehtud on. See kõik on vajalik kirjutatud koodi paremaks haldamiseks ning kõige parema tulemuse annavad need võimalused siis kui mitu arendajat koostöös tegelevad ühe projektiga.
Iga arendaja puutub varem või hiljem kokku versioonihaldusega. Versioonihaldus võimaldab arendajal kirjutatud koodi versioneerida. On võimalik näha minevikus tehtud muudatusi, kes need muudatused tegi, miks tegi (põhjus koos kommentaaridega) ja millal need tehtud on. See kõik on vajalik kirjutatud koodi paremaks haldamiseks ning kõige parema tulemuse annavad need võimalused siis kui mitu arendajat koostöös tegelevad sama projektiga.


'''Versioonihaldussüsteemid'''
'''Versioonihaldussüsteemid'''


Versioonihaldussüsteemid on need rakendused mida kasutavad versioonihalduskeskkonnad projektifailide haldamiseks. Versioonihalduse keskkondi on aegade algusest loodud erinevaid, erinevatel põhjustel erinevate inimeste poolt. Suurimaks üheks keskkonnaks on GitHub millel on kohe kannul GitLab ning kaugeltki maha ei jää ka Bitbucket. Kõik loetletud süsteemid on ehitatud Git'i peale mis on üks vanematest versioonihaldussüsteemidest. Peale Git'i on veel CVS, SVN, Mercurial, Monotone jm.  
Versioonihaldussüsteemid on need rakendused mida kasutavad versioonihalduskeskkonnad projektifailide haldamiseks. Versioonihalduse keskkondi on (programmeerimise) aegade algusest loodud erinevaid, erinevatel põhjustel, erinevate inimeste poolt. Üheks suurimaks keskkonnaks on GitHub millel on kohe kannul GitLab ning palju ei jää maha ka Bitbucket. Eelnimetatud süsteemid on ehitatud Git'i peale, mis on üks vanematest versioonihaldussüsteemidest. Peale Git'i on veel CVS, SVN, Mercurial, Monotone jm.  


Versioonihalduskeskkonnad on loonud mitmeid oma pakette ja teenuseid laiendamaks Giti funktsionaalsust. Lisaks on loodud ka hinnastatud võimalusi meeskondadele ja ettevõtetele mis pakuvad erinevat võimekust ja funktsioone veelgi parema koostöö kogemuse pakkumiseks. Üldiselt pakutakse põhifunktsionaalsust kõigile kuid suuremate inimeste hulga ja lisavõimaluste puhul tahetakse seda paketi, teenuse või plaanina pakkuda, olenevalt kuidas keskkond seda nimetanud on.
Versioonihalduskeskkonnad on loonud mitmeid oma pakette ja teenuseid laiendamaks Giti funktsionaalsust. Lisaks on loodud tasulisi teenuseid ja tooteid meeskondadele ning ettevõtetele, mis pakuvad erinevaid võimalusi ja funktsioone veelgi parema koostöö kogemuse pakkumiseks. Üldiselt pakutakse põhifunktsionaalsust kõigile, kuid suuremate inimeste hulga ja lisavõimaluste puhul tahetakse seda paketi, teenuse või plaanina pakkuda, olenevalt, kuidas keskkond seda nimetanud on.


Rõhku on pandud ka turvalisusele. Võimalus on saada teavitus kui projektis kasutatavas komponendis on leitud turvanõrkus või mõni ligipääsu võti on jäänud lähtekoodi. Jällegi, täpsemad ja veel turvalisust lisavad teenused on kasutatavad ainult parema plaani omanikele. Versioonihalduskeskkonna poolt pakutakse ettevõtte tüüpi plaani tellinutele lisaks veel kasutajatuge.
Rõhku on pandud ka turvalisusele. Näiteks saab kasutada teavitussüsteemi kui projektis kasutatavas komponendis on leitud turvanõrkus või mõni ligipääsu võti on jäänud lähtekoodi. Jällegi, täpsemad ja veel turvalisust lisavad teenused on kasutatavad ainult parema plaani omanikele. Versioonihalduskeskkonna poolt pakutakse ettevõtte tüüpi plaani tellinutele lisaks veel kasutajatuge.


'''Repositooriumid'''
'''Repositooriumid'''


Projektid on repositooriumid kust sikutatakse faile (pull) [https://git-scm.com/docs/git-pull], lükatakse neid üles (push) [https://git-scm.com/docs/git-push], kloonitakse omale (clone) [https://git-scm.com/docs/git-clone], liigutatakse ringi (mv) [https://git-scm.com/docs/git-mv], kustutatakse (rm) [https://git-scm.com/docs/git-rm] jpm. Versioonihalduskeskkonnad hoiustavad repositooriumeid ning lihtsustavad arendajate koostööd. Projekti sikutamisega tiritakse projektifailid omale soovitud keskkonda nende kallal töötamiseks. Tehtud soovitud muudatused, saadetakse need projekti tagasi teadmisega, et vanem versioon jääb alles. Arendajal on võimalus projekti ka mitmes seadmes muuta eelnevalt mainitud käskude abil. Mitmes arvutis tööd tehes on lõpuks tulemus mestida (merge) [https://git-scm.com/docs/git-merge] ning saab kõik jälle ühtseks.
Projektid on repositooriumid, kust sikutatakse faile (pull) <ref>https://git-scm.com/docs/git-pull</ref>, lükatakse neid üles (push) <ref>https://git-scm.com/docs/git-push</ref>, kloonitakse omale (clone) <ref>https://git-scm.com/docs/git-clone</ref>, liigutatakse ringi (mv) <ref>https://git-scm.com/docs/git-mv</ref>, kustutatakse (rm) <ref>https://git-scm.com/docs/git-rm</ref> jpm. Versioonihalduskeskkonnad hoiustavad repositooriumeid ning lihtsustavad arendajate koostööd. Projekti sikutamisega tiritakse projektifailid omale soovitud keskkonda nende kallal töötamiseks. Muudatused saadetakse projekti tagasi teadmisega, et vanem versioon jääb alles. Arendajal on võimalus projekti ka mitmes seadmes muuta eelnevalt mainitud käskude abil. Mitmes arvutis tööd tehes on võimalik tulemus mestida (merge) <ref>https://git-scm.com/docs/git-merge</ref> ning saab kõik jälle ühtseks.


Eelnevat saab lahendada kasutades käsurea käske kui ka versioonihalduskeskkonna graafilist liidest. Igal huvilisel on võimalik minna uudistama omale huvi pakkuvat avaliku repositooriumit. Näiteks on võimalik uurida kuidas on loodud meie ID-kaardi tarkvara. Sellist koodis tuhnimist isegi soovitatakse, et õppida parimatelt. Kunagi versioonihalduskeskkondi polnud mis koodi avalikult näitaks ning nt. Bill Gates käis kooli tagant prügikastist teiste programmeerijate minema visatud väljaprintide pealt vaatamas kuidas teised seda teevad.
Eelnimetatud käsklusi saab anda nii käsureal kui versioonihalduskeskkonna graafilise kasutajaliidese abil. Igal huvilisel on võimalik minna uudistama omale huvi pakkuvat avalikku repositooriumit. Näiteks on võimalik uurida, kuidas on loodud meie ID-kaardi tarkvara. Sellist koodis tuhnimist isegi soovitatakse, et õppida parimatelt. Varasemalt, kui versioonihalduskeskkondi ei olnud, käidi lausa prügikastist teiste programmeerijate äravisatud väljaprinte uudistamas, et hankida teadmisi programmeerimisest (nt. on teinud nii Bill Gates).


'''Keskkondadest täpsemalt'''
'''Keskkondadest täpsemalt'''


Järgnevalt tutvustame kolme välja valitud versioonihalduskeskkonda täpsemalt. Vaatame mis põhjusel ja kelle poolt erinevad keskkonnad loodi. Millisteks on need keskkonnad praeguseks arenenud ning mis lisafunktsionaalsust pakuvad. Versioonihalduskeskkonnad on tulnud pika maa ning lisanud oma arsenali erinevaid lisafunktsioone alates turvalisust puudutavaid lisasi kui ka täiendavaid taristuga integreerimise võimalusi.
Järgnevalt tutvustame kolme valitud versioonihalduskeskkonda lähemalt. Vaatame mis põhjusel ja kelle poolt erinevad keskkonnad loodi. Millisteks on need keskkonnad arenenud ning milliseid funktsionaalsusi pakuvad. Versioonihalduskeskkonnad on tulnud pika maa ning lisanud oma arsenali erinevaid lisafunktsioone alates turvalisust puudutavaid lisasi kui ka täiendavaid taristuga integreerimise võimalusi.


== '''GitHub''' ==
== '''GitHub''' ==


GitHub Inc on USA-s asuv globaalne ettevõte, mille peamiseks tooteks on Git-il baseeruv tarkvara versioonihalduskeskkond GitHub [https://en.wikipedia.org/wiki/GitHub]. (Kuigi sisuliselt võiks GitHubi kasutada mistahes tüüpi dokumentide versioonihalduseks, kasutatakse seda kõige laialdasemalt siiski tarkvara jaoks [https://techcrunch.com/2012/07/14/what-exactly-is-github-anyway/].) Git ise on käsureal põhinev tööriist, GitHub aga üks selle veebipõhine graafiline kasutajaliides, mis pakub mitmeid lisafunktsioone.
GitHub Inc on USA-s asuv globaalne ettevõte, mille peamiseks tooteks on Git-il baseeruv tarkvara versioonihalduskeskkond GitHub <ref>https://en.wikipedia.org/wiki/GitHub</ref>. (Kuigi sisuliselt võiks GitHubi kasutada mistahes tüüpi dokumentide versioonihalduseks, kasutatakse seda kõige laialdasemalt siiski tarkvara jaoks <ref>https://techcrunch.com/2012/07/14/what-exactly-is-github-anyway/</ref>.) Git ise on käsureal põhinev tööriist, GitHub aga üks selle veebipõhine graafiline kasutajaliides, mis pakub mitmeid lisafunktsioone.


'''Ajalugu'''
'''Ajalugu'''


GitHubi arendus algas 2007. aastal ning Chris Wanstrath, P. J. Hyett ja Tom Preston-Werner avalikustasid platformi 2008. aasta aprillis. Algselt tuntud kui Logical Awesome LLC [http://logicalawesome.com/], muudeti nimi selguse mõttes 2010. aastal GitHubiks [https://github.blog/2010-01-22-new-year-new-company/]. Juba 2010. aastal jõudis GitHub 1 miljoni repositooriumini [https://github.blog/2010-07-25-one-million-repositories/] ning 2018. aastal oli see arv juba üle 100 miljoni [https://venturebeat.com/2018/11/08/github-passes-100-million-repositories/].
GitHubi arendus algas 2007. aastal ning Chris Wanstrath, P. J. Hyett ja Tom Preston-Werner avalikustasid platformi 2008. aasta aprillis. Algselt tuntud kui Logical Awesome LLC <ref>http://logicalawesome.com/</ref>, muudeti nimi selguse mõttes 2010. aastal GitHubiks <ref>https://github.blog/2010-01-22-new-year-new-company/</ref>. Juba 2010. aastal jõudis GitHub 1 miljoni repositooriumini <ref>https://github.blog/2010-07-25-one-million-repositories/</ref> ning 2018. aastal oli see arv juba üle 100 miljoni <ref>https://venturebeat.com/2018/11/08/github-passes-100-million-repositories/</ref>.


2007. aastal, kui töö GitHubi kallal algas, oli Git suhteliselt vähekasutatud versioonihaldussüsteem ning puudusid kommertsiaalsed Giti hostimisvõimalused. GitHub loodigi esialgu mõttega, et seda tühja kohta täita, ning lisati võimalused koodi muudatuste paremaks jälgimiseks. GitHub lihtsustas oluliselt avatud lähtekoodiga projektide arendamist ja koostööd, ning kasvas omaette kogukonnaks, mida on nimetatud ka arendajate "Facebookiks", aga piltide ja elusündmuste jagamise asemel postitavad inimesed projektide koode ning teised arendajad kommenteerivad, pakuvad välja uusi lahendusi ning täiendavad koodi vastavalt enda vajadustele. Brian Doll, GitHubi strateegia asepresident on öelnud:
2007. aastal, kui töö GitHubi kallal algas, oli Git suhteliselt vähekasutatud versioonihaldussüsteem ning puudusid kommertsiaalsed Giti hostimisvõimalused. GitHub loodigi esialgu mõttega, et seda tühja kohta täita ning lisati võimalused koodi muudatuste paremaks jälgimiseks. GitHub lihtsustas oluliselt avatud lähtekoodiga projektide arendamist ja koostööd ning kasvas omaette kogukonnaks, mida on nimetatud ka arendajate "Facebookiks", aga piltide ja elusündmuste jagamise asemel postitavad inimesed projektide koode ning teised arendajad kommenteerivad, pakuvad välja uusi lahendusi ning täiendavad koodi vastavalt enda vajadustele. Brian Doll, GitHubi strateegia asepresident on öelnud:


„If you look at the top 100 sites, you’ve got a handful of social sites, thirty flavors of Google with national footprints, a lot of media outlets — and GitHub.“
<pre>„If you look at the top 100 sites, you’ve got a handful of social sites, thirty flavors of Google with national footprints, a lot of media outlets — and GitHub.“</pre>


Tänapäeval on GitHub koduks lugematutele avatud lähtekoodiga projektidele, muuhulgas kasutavad GitHubi ka Google, Facebook, Twitter ja Microsoft. [https://medium.com/@smhatre59/the-untold-story-of-github-132840f72f56]
Tänapäeval on GitHub koduks lugematutele avatud lähtekoodiga projektidele, muuhulgas kasutavad GitHubi ka Google, Facebook, Twitter ja Microsoft. <ref>https://medium.com/@smhatre59/the-untold-story-of-github-132840f72f56</ref>


Alates 2018. aastast on GitHub Microsofti filiaal [https://techcrunch.com/2018/06/04/microsoft-has-acquired-github-for-7-5b-in-microsoft-stock/] [https://github.blog/2018-10-26-github-and-microsoft/].
Alates 2018. aastast on GitHub Microsofti filiaal <ref>https://techcrunch.com/2018/06/04/microsoft-has-acquired-github-for-7-5b-in-microsoft-stock/</ref> <ref>https://github.blog/2018-10-26-github-and-microsoft/</ref>.


'''GitHubist lähemalt'''
'''GitHubist lähemalt'''


GitHubi tarkvara arendati välja Ruby on Rails ja Erlangi baasil. Kolm peamist GitHubi funktsionaalsust on ''fork'', ''pull request'' ja ''merge''. ''Forking'' tähendab, et repositoorium kopeeritakse ühelt kasutajalt teise kasutaja repositooriumi. See tähendab, et kasutaja kellel enne ei olnud projekti kirjutamise õigust, saab seda enda kasutaja alt muuta, ning seejärel saata ''pull request''i originaalomanikule. Viimane saab seejärel soovi korral ''merge''ida muutudes originaalrepositooriumi ühe nupuvajutusega.  
GitHubi tarkvara arendati välja Ruby on Rails ja Erlangi baasil. Kolm peamist GitHubi funktsionaalsust on ''fork'', ''pull request'' ja ''merge''. ''Forking'' tähendab, et repositoorium kopeeritakse ühelt kasutajalt teise kasutaja repositooriumi. See tähendab, et kasutaja kellel enne ei olnud projekti kirjutamise õigust, saab seda enda kasutaja alt muuta, ning seejärel saata ''pull request''i originaalomanikule. Viimane saab seejärel soovi korral ''merge''ida muutes originaalrepositooriumi ühe nupuvajutusega.  


Enne GitHubi oli kogu protsess avatud lähtekoodiga projektides palju keerulisem ja pikem: projekti lähtekoodi tuli muuta lokaalselt, kirjutada ise nimekiri muutustest (nimega ''patch'') ja see tuli meiliga saata projekti omanikule, kes siis pidi muutused üle vaatama ja need ise sisse viima. GitHubis on igal inimesel profiil, kus on näha inimeste "reputatsioon", mis suureneb iga kord kui inimese ''pull request'' heaks kiidetakse. See võimaldab projekti autoril näha, kes tema projektile muudatusettepanekuid esitavad, nende "reputatsiooni" ja varasemaid projekte. Muudatusettepanekute üle saab ka avalikult arutleda. [https://techcrunch.com/2012/07/14/what-exactly-is-github-anyway/]
Enne GitHubi oli kogu protsess avatud lähtekoodiga projektides palju keerulisem ja pikem: projekti lähtekoodi tuli muuta lokaalselt, kirjutada ise nimekiri muutustest (nimega ''patch'') ja see tuli meiliga saata projekti omanikule, kes siis pidi muutused üle vaatama ja need ise sisse viima. GitHubis on igal inimesel profiil, kus on näha inimeste "reputatsioon", mis suureneb iga kord kui inimese ''pull request'' heaks kiidetakse. See võimaldab projekti autoril näha, kes tema projektile muudatusettepanekuid esitavad, nende "reputatsiooni" ja varasemaid projekte. Muudatusettepanekute üle saab ka avalikult arutleda. <ref>https://techcrunch.com/2012/07/14/what-exactly-is-github-anyway/</ref>


'''Lähtekood, litsents'''
'''Lähtekood, litsents'''


GitHubi tarkvara on suletud lähtekoodiga. Enterprise serveri funktsionaalsusega on võimalik tutvuda lähemalt GitHub Enterprise veebilehel. [https://github.com/pricing#feature-comparison]
GitHubi tarkvara on suletud lähtekoodiga. Enterprise serveri litsentsiga on võimalik tutvuda lähemalt GitHub Enterprise veebilehel. <ref>https://enterprise.github.com/license</ref>


'''Teenused'''
'''Teenused'''


GitHub pakub laias laastus kolme paketitüüpi: tasuta versioon, Pro/Team versioon ja Enterprise. Kõikide pakettidega saab töötada piiramatu arvu inimestega piiramatu arvu avalike repositooriumitega, kasutades kõiki funktsionaalsusi, ning piiramatu arvu privaatsete repositooriumitega. Privaatsete repositooriumite võimalused on aga piiratud erineval määral. Näiteks GitHub Free for user accounts (tasuta versioon üksikkasutajale) lubab privaatsete repositooriumite korral töötada kuni kolme inimesega ühe projekti kallal.  
GitHub pakub laias laastus kolme paketitüüpi: tasuta versioon, Pro/Team versioon ja Enterprise. Kõikide pakettidega saab töötada piiramatu arvu inimestega piiramatu arvu avalike repositooriumitega, kasutades kõiki funktsionaalsusi, ning piiramatu arvu privaatsete repositooriumitega. Privaatsete repositooriumite võimalused on aga piiratud erineval määral. Näiteks GitHub Free for user accounts (tasuta versioon üksikkasutajale) lubab privaatsete repositooriumite korral töötada kuni kolme inimesega ühe projekti kallal.  
Github Pro ja Team maksavad 4$ kuus kasutaja kohta, ning Enterprise 21$ kuus kasutaja kohta. On olemas veel GitHub One, mis pakub veelgi lisavõimalusi Enterprise plaanile (Advanced Security, Insights, Learning Lab, and Premium Plus Support). [https://github.blog/2020-04-14-github-is-now-free-for-teams/] Erinevate pakettide võimalustega ja hindadega on võimalik lähemalt tutvuda GitHubi koduleheküljel. [https://help.github.com/en/github/getting-started-with-github/githubs-products]
Github Pro ja Team maksavad 4$ kuus kasutaja kohta, ning Enterprise 21$ kuus kasutaja kohta. On olemas veel GitHub One, mis pakub veelgi lisavõimalusi Enterprise plaanile (Advanced Security, Insights, Learning Lab, and Premium Plus Support). <ref>https://github.blog/2020-04-14-github-is-now-free-for-teams/</ref> Erinevate pakettide võimalustega ja hindadega on võimalik lähemalt tutvuda GitHubi koduleheküljel. <ref>https://help.github.com/en/github/getting-started-with-github/githubs-products</ref>


'''Kasutajamugavus, juurutamine ja integratsioonivõimalused'''
'''Kasutajamugavus, juurutamine ja integratsioonivõimalused'''


GitHub  keskendub peamiste funktsioonide töökindlusele ja kättesaadavusele, ning delegeerib lisavõimalused välistele platformidele nagu Travis ja Waffle (erinevate tööriistadega on võimalik tutvuda lähemalt siin: [https://github.com/marketplace]). GitHubi konkurent GitLab pakub kindlasti rohkem integratsioonivõimalusi, kuid GitHubi peamiseks eeliseks on selle arvukas ja aktiivne kasutajaskond.
GitHub  keskendub peamiste funktsioonide töökindlusele ja kättesaadavusele, ning delegeerib lisavõimalused välistele platformidele nagu Travis ja Waffle. GitHubi konkurent GitLab pakub rohkem integratsioonivõimalusi, kuid GitHubi peamiseks eeliseks on selle arvukas ja aktiivne kasutajaskond. Samuti on GitHubiga võimalik kasutada arvukaid väliseid platforme (erinevate tööriistadega on võimalik tutvuda lähemalt siin: <ref>https://github.com/marketplace</ref>).


== '''GitLab''' ==
== '''GitLab''' ==


GitLab Inc on USA's asuv tarkvaraettevõte, kelle peakorter asub San Franciscos. GitLab pakub tarkvaraarenduseks mõeldud erinevaid tööriistu ning pakettlahendusi, keskendudes peamiselt DevOps tarkvaraarenduse kultuurile omastele teenustele ja tootedele. [https://en.wikipedia.org/wiki/GitLab]
GitLab Inc on USA's asuv tarkvaraettevõte, kelle peakorter asub San Franciscos. GitLab pakub tarkvaraarenduseks mõeldud erinevaid tööriistu ning pakettlahendusi, keskendudes peamiselt DevOps tarkvaraarenduse kultuurile omastele teenustele ja toodetele. <ref>https://en.wikipedia.org/wiki/GitLab</ref>


'''Algusaastad'''
'''Algusaastad'''


GitLab’i sünnihetkeks võib pidada 2011. aasta oktoobrikuud, mil GitLab’i esimene versioon päevavalgust nägi. GitLab’i loomisel kandis võtmeisiku rolli ukrainlane (inglise päraselt) Dmitriy Zaporozhets. GitLab kirjutati esialgu Ruby’s. Veidi ajas tagasi minnes võib lühidalt vaadata, millest ajendatult GitLab üldse loodi. Mõni aasta varem (2008) oli loodud GitHub, kellele GitLab on tänaseks üks peamisi konkurente. GitLab’i looja Dmitriy Zaporozhets’i töötas parajasti ettevõttes nimega Sphere Software, kus ta tihtipeale kasutas versioonihaldustööriistana GitHub’i. Probleem oli aga selles, et GitHub’i pakutavad teenused olid mõneti jäigad ning teisalt ka kallid. Dmitriy sõnul pidid nad töötama aegunud tööriistadega või ostma sisse kallihinnalisi tööriistasid, mis pärssisid nende tööd ega lasknud neil keskenduda oma põhilistele tööülesannetele. Hiljem on ta öelnud, et see oligi peamine ajend GitLab’i kui kvaliteetse ja taskukohasema tööriista loomiseks. [https://about.gitlab.com/company/history/]
GitLab’i sünnihetkeks võib pidada 2011. aasta oktoobrikuud, mil GitLab’i esimene versioon päevavalgust nägi. GitLab’i loomisel kandis võtmeisiku rolli ukrainlane (inglise päraselt) Dmitriy Zaporozhets. GitLab kirjutati esialgu Ruby’s. Veidi ajas tagasi minnes võib lühidalt vaadata, millest ajendatult GitLab üldse loodi. Mõni aasta varem (2008) oli loodud GitHub, kellele GitLab on tänaseks üks peamisi konkurente. GitLab’i looja Dmitriy Zaporozhets’i töötas parajasti ettevõttes nimega Sphere Software, kus ta tihtipeale kasutas versioonihaldustööriistana GitHub’i. Probleem oli aga selles, et GitHub’i pakutavad teenused olid mõneti jäigad ning teisalt ka kallid. Dmitriy sõnul pidid nad töötama aegunud tööriistadega või ostma sisse kallihinnalisi tööriistasid, mis pärssisid nende tööd ega lasknud neil keskenduda oma põhilistele tööülesannetele. Hiljem on ta öelnud, et see oligi peamine ajend GitLab’i kui kvaliteetse ja taskukohasema tööriista loomiseks. <ref>https://about.gitlab.com/company/history/</ref>


'''Edulugu'''
'''Edulugu'''


Kuna GitLab oli esialgu siiski pigem hobiprojekt, mis ei toonud rahalist tulu, jätkas Dmitriy palgalist tööd, et tulla toime igapäevaste kulutustega. GitLab’i kasutajate arv kasvas ning teiste hulgas hakkas seda kasutama ka tema enda tööandja. Vaatamata mitmele katsele raha teenida, mh pakkudes tasulist ''support''-teenust kui kogudes annetusi, ei osutunud need kuigi edukaks. Oluliseks muutuse tõi hollandlasest ettevõtja Sid Sibrangy, kel oli tekkinud huvi GitLab’i vastu ning soovis seda oma ettevõttes kasutada. Mõni aeg hiljem oli Dmitriy jõudnud oma elus etappi, kus ta soovis end täielikult pühendada GitLab’i arendamisse. Saatuse sümbolina pakkus Sid Sibrangy, et võtab ta palgaliselt tööle tingimusel, et Dmitriy aitab Sid’i tema ettevõttes. Nii läkski ja umbes aasta hiljem, 2014. aastal registreeriti GitLab ettevõttena, seejärel võeti tööle rohkem inimesi ning 2016. aastaks töötas ettevõttes juba ligi 100 inimest. Täna on GitLab’is tööl ca 1100 töötajat ning ettevõtte väärtus on hinnanguliselt 2,7 miljardit USA dollarit. Ajapikku on osa GitLab’ist ümber kirjutatud Go’s ja Vue.js’is. [https://ain.ua/en/2018/09/16/gitlab-story/]
Kuna GitLab oli esialgu siiski pigem hobiprojekt, mis ei toonud rahalist tulu, jätkas Dmitriy palgalist tööd, et tulla toime igapäevaste kulutustega. GitLab’i kasutajate arv kasvas ning teiste hulgas hakkas seda kasutama ka tema enda tööandja. Vaatamata mitmele katsele raha teenida, mh pakkudes tasulist ''support''-teenust kui kogudes annetusi, ei osutunud need kuigi edukaks. Olulise muutuse tõi hollandlasest ettevõtja Sid Sibrangy, kel oli tekkinud huvi GitLab’i vastu ning soovis seda oma ettevõttes kasutada. Mõni aeg hiljem oli Dmitriy jõudnud oma elus etappi, kus ta soovis end täielikult pühendada GitLab’i arendamisse. Saatuse sümbolina pakkus Sid Sibrangy, et võtab ta palgaliselt tööle tingimusel, et Dmitriy aitab Sid’i tema ettevõttes. Nii läkski ja umbes aasta hiljem, 2014. aastal registreeriti GitLab ettevõttena, seejärel võeti tööle rohkem inimesi ning 2016. aastaks töötas ettevõttes juba ligi 100 inimest. Täna on GitLab’is tööl ca 1100 töötajat ning ettevõtte väärtus on hinnanguliselt 2,7 miljardit USA dollarit. Ajapikku on osa GitLab’ist ümber kirjutatud Go’s ja Vue.js’is. <ref>https://ain.ua/en/2018/09/16/gitlab-story/</ref>


'''Litsents, lähtekoodi avalikkus'''
'''Litsents, lähtekoodi avalikkus'''
Line 76: Line 76:
GitLab on saadaval nii tasuta kui tasulise versioonina. ''Community Edition'' on avatud lähtekoodiga ning omab (litsentsimaailmas võrdlemisi pehmet) MIT-litsentsi, mis teeb temast kasuliku, vabalt ning laialdaselt kasutatava tööriista. Samuti on saadaval tasuline ''Enterprise Edition'', mis ei vasta kõigile avatud lähtekoodiga tarkvara tingimustele (kuigi kood on kätte saadav, mis lihtsustab ''trial''-versiooni pakkumist) ning on mõeldud tasulise teenusena, sisaldades ''Community Edition''’iga võrreldes enam tööriistu, tuge ning muid võimalusi.
GitLab on saadaval nii tasuta kui tasulise versioonina. ''Community Edition'' on avatud lähtekoodiga ning omab (litsentsimaailmas võrdlemisi pehmet) MIT-litsentsi, mis teeb temast kasuliku, vabalt ning laialdaselt kasutatava tööriista. Samuti on saadaval tasuline ''Enterprise Edition'', mis ei vasta kõigile avatud lähtekoodiga tarkvara tingimustele (kuigi kood on kätte saadav, mis lihtsustab ''trial''-versiooni pakkumist) ning on mõeldud tasulise teenusena, sisaldades ''Community Edition''’iga võrreldes enam tööriistu, tuge ning muid võimalusi.


GitLab’i dokumentatsiooni, lähtekoodi ning juhenditega on võimalik tutvuta GitLab’i koduleheküljel. [https://about.gitlab.com/]
GitLab’i dokumentatsiooni, lähtekoodi ning juhenditega on võimalik tutvuta GitLab’i koduleheküljel. <ref>https://about.gitlab.com/</ref>


'''GitLab teenused'''
'''GitLab teenused'''


GitLab pakub erinevaid teenuseid, mis on seotud tarkvara arendusega. Nende peamine toode või toodepakett on ''DevOps lifecycle'', mis sisaldab erinevaid teenuseid alustades arenduse planeerimisest kuni toode lansseerimiseni – kõik saab teostada GitLab’i vahendusel. Kõige paremini iseloomustab GitLab’i teenuseid nende endi kodulehel paiknev kirjeldus:  
GitLab pakub erinevaid teenuseid, mis on seotud tarkvara arendusega. Nende peamine toode või tootepakett on ''DevOps lifecycle'', mis sisaldab erinevaid teenuseid, alustades arenduse planeerimisest kuni toode lansseerimiseni – kõik saab teostada GitLab’i vahendusel. Kõige paremini iseloomustab GitLab’i teenuseid nende endi kodulehel paiknev kirjeldus:  
  „With GitLab, you get a complete CI/CD toolchain in a single application. One interface. One conversation. One permission model. Thousands of features. You'll be amazed at everything GitLab can do today. And we're just getting started.“ - GitLab.
  „With GitLab, you get a complete CI/CD toolchain in a single application. One interface. One conversation. One permission model. Thousands of features. You'll be amazed at everything GitLab can do today. And we're just getting started.“ - GitLab.


GitLab pakub 30-päeva pikkust ''trial''-perioodi täisversioonile, mille möödudes on võimalik edasi kasutada ''free''-ligipääsuga teenuseid. Alternatiivina saab osta ka tasulisi teenuseid – ''Bronze'', ''Silver'' ja ''Gold''-paketid, vastavalt 4$, 19$ ja 99$-kuutasuga. Teenuste paketipõhise varieeruvusega on võimalik tutvuda GitLab'i koduleheküljel. [https://about.gitlab.com/pricing/gitlab-com/feature-comparison/] Samuti on GitLab aktiivne sotsiaalmeedias, omades kontot YouTube keskkonnas [https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg]
GitLab pakub 30-päeva pikkust ''trial''-perioodi täisversioonile, mille möödudes on võimalik edasi kasutada ''free''-ligipääsuga teenuseid. Alternatiivina saab osta ka tasulisi teenuseid – ''Bronze'', ''Silver'' ja ''Gold''-paketid, vastavalt 4$-, 19$- ja 99$-kuutasuga. Teenuste paketipõhise varieeruvusega on võimalik tutvuda GitLab'i koduleheküljel. <ref>https://about.gitlab.com/pricing/gitlab-com/feature-comparison/</ref> Samuti on GitLab aktiivne sotsiaalmeedias, omades kontot YouTube keskkonnas <ref>https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg</ref>


'''Kasutajamugavus, juurutamine ja integratsioonivõimalused'''
'''Kasutajamugavus, juurutamine ja integratsioonivõimalused'''
Line 93: Line 93:
== '''Bitbucket''' ==
== '''Bitbucket''' ==


Bitbucket on Git’il põhinev lähtekoodide ja arendusprojektide repostitooriumite hoidla ja koostöö tegemise tööriist tiimidele. Bitbucket kuulub Atlassian Corporation Plc’le. Suureks eeliseks on see, et Bitbucket integreerub lihtsalt teiste Atlassian’i tarkvaradega nagu Jira, HipChat, Confluence ja Bamboo. Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center.
Bitbucket on Git’il põhinev lähtekoodide ja arendusprojektide repositooriumite hoidla ja koostöö tegemise tööriist tiimidele. Bitbucket kuulub Atlassian Corporation Plc’le. Bitbucket'i eeliseks teiste hoidlatega võrreldes on see, et Bitbucket integreerub lihtsasti teiste Atlassian’i tarkvaradega nagu Jira, HipChat, Confluence ja Bamboo. Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center.


'''Ajalugu'''
'''Ajalugu'''


Bitbucket oli varem iseseisev startup, mille asutas Jesper Nøhr. 29. septembril 2010 ostis Bitbucketi’i ära Atlassian Corporation Plc. [https://web.archive.org/web/20160303204710/http://www.itwire.com/it-industry-news/strategy/42202-atlassian-snatches-bitbucket] Algselt pakkus Bitbucket ainult Mercurial’i versioonihaldustarkvara tuge. 2011 alustati ametlikult Giti versioonihaldustarkvara toetamist. [https://bitbucket.org/blog/bitbucket-now-rocks-git]
Bitbucket oli varem iseseisev startup, mille asutas Jesper Nøhr. 29. septembril 2010. aastal ostis Bitbucketi’i ära Atlassian Corporation Plc. <ref>https://web.archive.org/web/20160303204710/http://www.itwire.com/it-industry-news/strategy/42202-atlassian-snatches-bitbucket</ref> Algselt pakkus Bitbucket ainult Mercurial’i versioonihaldustarkvara tuge. 2011. aastal alustati ametlikult Giti versioonihaldustarkvara toetamist. <ref>https://bitbucket.org/blog/bitbucket-now-rocks-git</ref>
2017. aasta veebruaris teatas Bitbucket, et jõudis oma platvormil 6 miljoni arendaja ja miljoni meeskonnani. [https://bitbucket.org/blog/bitbucket-cloud-5-million-developers-900000-teams] 2018. aasta aprillis teatas Atlassian, et Bitbucket jõudis 10 miljoni registreeritud kasutaja ja üle 28 miljoni koodihoidlani. [https://bitbucket.org/blog/celebrating-10-million-bitbucket-cloud-registered-users]
2017. aasta veebruaris teatas Bitbucket, et jõudis oma platvormil 6 miljoni arendaja ja miljoni meeskonnani. <ref>https://bitbucket.org/blog/bitbucket-cloud-5-million-developers-900000-teams</ref> 2018. aasta aprillis teatas Atlassian, et Bitbucket jõudis 10 miljoni registreeritud kasutaja ja üle 28 miljoni koodihoidlani. <ref>https://bitbucket.org/blog/celebrating-10-million-bitbucket-cloud-registered-users</ref>


'''Lähtekoodi avalikkus'''
'''Lähtekoodi avalikkus'''


Bitbucket Serveri lähtekood on avalik kõigile litsentsi omanikele.[https://www.atlassian.com/licensing/bitbucket-server#server-licensing]
Bitbucket Serveri lähtekood on avalik kõigile litsentsi omanikele.<ref>https://www.atlassian.com/licensing/bitbucket-server#server-licensing</ref>


'''Teenused'''
'''Teenused'''
Line 108: Line 108:
Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center.
Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center.
Bitbucketi Cloud on kirjutatud Pythonis, kasutades Django veebiraamistikku.
Bitbucketi Cloud on kirjutatud Pythonis, kasutades Django veebiraamistikku.
Bitbucket Cloud asub Atlassiani serverites ja sellele pääseb ligi URL-i kaudu. Bitbucket Cloud’il on sisseehitatud plugin’ad, mis võimaldavad lihtsalt oma koodi arendada, testida ja juurutada otse Bitbucket’ist.
Bitbucket Cloud asub Atlassian'i serverites ja sellele pääseb ligi URL-i kaudu. Bitbucket Cloud’il on sisseehitatud plugin’id, mis võimaldavad lihtsasti oma koodi arendada, testida ja juurutada otse Bitbucket’ist.
Bitbucket Server (endise nimega Stash [https://confluence.atlassian.com/bitbucketserver/bitbucket-rebrand-faq-779298912.html]) on Java-s kirjutatud ja Apache Maveniga loodud Git-serveri ja veebiliidese kombinatsioonitoode. [https://developer.atlassian.com/server/bitbucket/how-tos/building-bitbucket-server-from-source-code/] See võimaldab kasutajatel teha Giti põhitoiminguid ning pakub integratsiooni ka teiste Atlassiani tööriistadega.  
Bitbucket Server (endise nimega Stash <ref>https://confluence.atlassian.com/bitbucketserver/bitbucket-rebrand-faq-779298912.html</ref>) on Java-s kirjutatud ja Apache Maveniga loodud Git-serveri ja veebiliidese kombinatsioonitoode. <ref>https://developer.atlassian.com/server/bitbucket/how-tos/building-bitbucket-server-from-source-code/</ref> See võimaldab kasutajatel teha Giti põhitoiminguid ning pakub integratsiooni ka teiste Atlassian'i tööriistadega.  
Bitbucket Server on kommertstarkvara toode. See annab suurema privaatsuse koodi repsitooriumite üle, kui ettevõttel on võimalus koodi hoiustada enda serverites.  
Bitbucket Server on kommertstarkvaratoode. See annab suurema privaatsuse koodi repsitooriumite üle, sest ettevõttel on võimalus koodi hoiustada enda serverites.  
Bitbucket Data Center näeb kasutajatele välja nagu üksik Bitbucket Serveri eksemplar, kuid seda on võimalik kasutada erinevate serverite pealt ning sellel on mõned lisaeelised Bitbucket Serveri ees.
Bitbucket Data Center näeb kasutajatele välja nagu üksik Bitbucket Serveri eksemplar, kuid seda on võimalik kasutada erinevate serverite pealt ning sellel on mõned lisaeelised Bitbucket Serveri ees.


Bitbucket Cloud’il on kolm hinnataset: Tasuta, Standard ja Premium. Tasuta paketi kasutajatel võib olla piiramatu hulk avalikke ja privaatseid hoidlaid. See, kui palju kasutajaid saab avalikke andmehoidlaid redigeerida / lugeda, pole piiratud, privaathoidlad on aga piiratud 5 kasutajaga, mida saab suurendada tasulise paketi valimisega. Standard ja Premium paketi hind kujuneb vastavalt privaathoidlate kasutajate arvule. Bitbucket on õpilastele ja õpetajatele tasuta, kui nad registreeruvad akadeemilise e-posti aadressiga. Teenus on tasuta ka avatud lähtekoodiga projektide jaoks, kui see vastab Atlassian’i poolt antud nõuetele. [https://www.atlassian.com/software/views/open-source-license-request]
Bitbucket Cloud’il on kolm hinnataset: Tasuta, Standard ja Premium. Tasuta paketi kasutajatel võib olla piiramatu hulk avalikke ja privaatseid hoidlaid. See, kui palju kasutajaid saab avalikke andmehoidlaid redigeerida / lugeda, pole piiratud, privaathoidlad on aga piiratud 5 kasutajaga, mida saab suurendada tasulise paketi valimisega. Standard ja Premium paketi hind kujuneb vastavalt privaathoidlate kasutajate arvule. Bitbucket on õpilastele ja õpetajatele tasuta, kui nad registreeruvad akadeemilise e-posti aadressiga. Teenus on tasuta ka avatud lähtekoodiga projektide jaoks, kui see vastab Atlassian’i poolt antud nõuetele. <ref>https://www.atlassian.com/software/views/open-source-license-request</ref>
Bitbucket Serveri ja Bitbucket Data Center’i puhul kujuneb hind samuti vastavalt kasutajate arvule kuid nende puhul tasuta versiooni pole. Akadeemilistele asutustele on Bitbucket Serveri litsents 50% soodustusega.[https://bitbucket.org/product/pricing]
Bitbucket Serveri ja Bitbucket Data Center’i puhul kujuneb hind samuti vastavalt kasutajate arvule, kuid nende puhul tasuta versiooni pole. Akadeemilistele asutustele on Bitbucket Serveri litsents 50% soodustusega.<ref>https://bitbucket.org/product/pricing</ref>


'''Kasutajamugavus, juurutamine ja integratsioonivõimalused'''
'''Kasutajamugavus, juurutamine ja integratsioonivõimalused'''


Bitbucket’i eelis on erinevate integreerimisvõimaluste rohkus ja sisseehitatud ühilduvus. Bitbucket integreerub lihtsasti teiste Atlassiani poolt pakutud tarkvaratoodetega nagu näiteks JIRA, HipChat ja Bamboo. Kasutajatel on ka võimalus kasutada Atlassiani Marketplace’i, et täiustada nii Bitbucket’it kui ka teisi kasutusel olevaid Atlassiani tooteid. Lisaks on Bitbucket’il ka paindlik hinnapoliitika. Teenuse kasutamise hind kujuneb töötajate arvu pealt ning see aitab ettevõttel märkimisväärselt kokku hoida võrreldes näiteks GitHubi teenuse ostmisega.
Bitbucket’i eelis on erinevate integreerimisvõimaluste rohkus ja sisseehitatud ühilduvus. Bitbucket integreerub lihtsasti teiste Atlassian'i poolt pakutud tarkvaratoodetega nagu näiteks JIRA, HipChat ja Bamboo. Kasutajatel on ka võimalus kasutada Atlassiani Marketplace’i, et täiustada nii Bitbucket’it kui ka teisi kasutusel olevaid Atlassian'i tooteid. Lisaks on Bitbucket’il ka paindlik hinnapoliitika. Teenuse kasutamise hind kujuneb töötajate arvu pealt ning see aitab ettevõttel märkimisväärselt kokku hoida võrreldes näiteks GitHub'i teenuse ostmisega.
Miinuseks võiks olla aga asjaolu, et kogukonna suuruse poolest jääb Bitbucket tugevalt alla turuliider GitHub’ile.[https://www.business2community.com/business-innovation/bitbucket-vs-github-best-version-control-software-business-01623901#Gdvujvclq5Ao2X0X.97]
Miinuseks võiks olla asjaolu, et kogukonna suuruse poolest jääb Bitbucket tugevalt alla turuliider GitHub’ile.<ref>https://www.business2community.com/business-innovation/bitbucket-vs-github-best-version-control-software-business-01623901#Gdvujvclq5Ao2X0X.97</ref>


== '''Kokkuvõte''' ==
== '''Kokkuvõte''' ==


Iga tõsisema tarkvaraprojekti loomisel tuleb projekti koodi jagada erinevate arendajate vahel. Lisaks tuleb erinevate arendajate poolt loodud, muudetud, parandatud ja täiendatud koodi hallata ning erinevatel etappidel kokku koondada ühtselt töötavaks tarkvaraks. Seda aitavad kõige paremini korraldada erinevad versioonihaldussüsteemid, millest kõige populaarsemaks on kujunenud jagatud süsteemil ''(Distributed Version Control System - DVCS) [https://scmquest.com/centralized-vs-distributed-version-control-systems/]'' baseeruv Git [https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html] [https://www.atlassian.com/git/tutorials/what-is-git], mille kasutamisel on versioonihaldus keskkondadest valida kolme peamise vahel mida eelpool on tutvustatud: Github, Bitbucket või Gitlab. Selleks, et valida nii enda projekt kui ka projektiga tegeleva tiimi jaoks kõige parem lahendus on oluline aru saada nende keskkondade peamistest erinevustest ja sarnasustest.
Iga tõsisema tarkvaraprojekti loomisel tuleb projekti koodi jagada mitmete arendajatega. Lisaks tuleb erinevate arendajate poolt loodud, muudetud, parandatud ja täiendatud koodi hallata ning erinevatel etappidel kokku koondada ühtselt töötavaks tarkvaraks. Seda aitavad korraldada erinevad versioonihaldussüsteemid, millest kõige populaarsemaks on kujunenud jagatud süsteemil ''(Distributed Version Control System - DVCS) <ref>https://scmquest.com/centralized-vs-distributed-version-control-systems/</ref>'' baseeruv Git <ref>https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html</ref> <ref>https://www.atlassian.com/git/tutorials/what-is-git</ref>, mille kasutamisel on versioonihalduskeskkondadest valida kolme peamise vahel, mida eelpool on tutvustatud: Github, Gitlab või Bitubucket. Selleks, et valida nii projekti enda kui projektiga tegeleva tiimi jaoks parim lahendus, on oluline aru saada nende keskkondade peamistest erinevustest ja sarnasustest.


'''Peamised võrdlusmomendid'''
'''Peamised võrdlusmomendid'''


Kuigi tänaseks päevaks võib suures pildis öelda, et kõik eeltutvustatud vesrsioonihaldus keskkonnad võimaldavad teha praktiliselt sarnaseid asju toome siinkohal siiski välja mõningad erinevused ja olulised kriteeriumid, mis võivad saada määravaks, et vastata küsimusele: '''"Millist versioonihaldus keskkonda ja millisel juhul oleks siis ikkagi mõtekas kasutada?"'''. Sellele küsimusele vastamist tuleks alustada eelkõige sellest, et tuleks täpselt enda jaoks määratleda milline on projekti sisu mida hakatakse arendama ja millised on projekti tiimi varasemad oskused ning kogemused teatud versioonihaldus keskkonna kasutamisel. Projekti sisu kohapealt tuleks selgeks teha kas saab kasutada avalike repositooriumeid (millel puuduvad piirangud) või tuleb kasutada privaatseid repositooriumeid (millel on peal erinevad piirangud olenevalt keskkonnast). Samuti kui suure tiimiga on tegemist sest olenevalt keskkonnast tekkivad piirangud alates teatud tiimi suurusest ja tasuliste teenusepakettide lõppmaksumus oleneb tiimi liikmete arvust. Tiimi puhul on oluline arvestada ka nende varasemat kogemust erinevate keskkondade kasutamisel kuna uue keskkonna kasutamise selgeks tegemise õppimiskõver võib olla üsna ajamahukas ja seda tuleb arvestada projekti tähtaegadesse. Kui ikka 90% tiimi liikmetest on harjunud kasutama näiteks Bitbucketit siis oleks mõtekas kasutada seda ka arutluse all oleva projekti puhul, et vältida ajakulu õppimisele ja võimalike vigadega tegelemisele mis tulenevad oskamatusest keskkonda kasutada. Järgnevalt on välja toodud peamised erinevused kolme versioonihaldus keskkonna vahel kuid põhjalikuma analüüsi jaoks leiab täiendavat infot järgnevatelt linkidelt: [https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab], [https://www.gangboard.com/blog/github-vs-gitlab-vs-bitbucket], [https://www.geeksforgeeks.org/bitbucket-vs-github-vs-gitlab/], [https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html].
Kuigi tänaseks päevaks võib suures pildis öelda, et kõik eeltutvustatud vesrsioonihalduskeskkonnad võimaldavad teha praktiliselt sarnaseid asju, toome siinkohal siiski välja mõningad erinevused ja olulised kriteeriumid, mis võivad saada määravaks, et vastata küsimusele: '''"Millist versioonihaldus keskkonda ja millisel juhul oleks siis ikkagi mõtekas kasutada?"'''. Sellele küsimusele vastamist tuleks alustada eelkõige sellest, et tuleks määratleda, milline on projekti sisu ja millised on projektis osalejate varasemad oskused ning kogemused versioonihalduskeskkondade kasutamisel. Tuleks selgeks teha, kas saab kasutada avalikke repositooriumeid (millel puuduvad piirangud) või tuleb kasutada privaatseid repositooriumeid (millel on peal erinevad piirangud olenevalt keskkonnast). Samuti tuleb arvestada tiimi suurusega, sest olenevalt keskkonnast tekivad piirangud ning sõltub teenusepaketi maksumus olenevalt tiimi liikmete arvust. Tiimi puhul on oluline arvestada nende varasemat kogemust erinevate keskkondade kasutamisel, kuna uue keskkonna kasutamise selgeks tegemise õppimiskõver võib olla üsna ajamahukas ja seda tuleb arvestada projekti tähtaegadesse. Kui ikka 90% tiimi liikmetest on harjunud kasutama näiteks Bitbucketit, siis oleks mõistlik kasutada seda ka arutluse all oleva projekti puhul, et vältida ajakulu õppimisele ja võimalike vigadega tegelemisele, mis tulenevad oskamatusest keskkonda kasutada. Järgnevalt on välja toodud peamised erinevused kolme versioonihaldus keskkonna vahel kuid põhjalikuma analüüsi jaoks leiab täiendavat infot järgnevatelt linkidelt: <ref>https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab</ref>, <ref>https://www.gangboard.com/blog/github-vs-gitlab-vs-bitbucket</ref>, <ref>https://www.geeksforgeeks.org/bitbucket-vs-github-vs-gitlab/</ref>, <ref>https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html</ref>.


'''GitHub''' - Kõige esimene versioonihaldus keskkond mis on kõige suurema kasutajaskonnaga, kõige töökindlam aga samas ka kõige vähem enda käe järgi kohandatav ehk kõige jäigem kui projektil peaksid ilmnema väga erilised integratsiooni või kohandamise vajadused kuna tegemist on suletud lähtekoodiga tarkvaraga. Samas on loodud funktsionaalsue laiendamiseks GitHub Marketplace [https://github.com/marketplace], mis pakub nii tasuta kui tasulisi lisafunktsionaalsuste laiendamise võimalusi. Kõige detailsema koodi ühtseks kokkusobitamise võimekusega erinevatelt arendajatelt (pull request) [https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab] kui projekti iseloom peaks seda funktsionaalsust vajama. Tasuliste teenuste pakettide osas hinnaklassilt küll kõige kallim [https://github.com/pricing#feature-comparison] aga samas kõige töökindlam. Tänu kõige suuremale kasutajaskonnale omab ka suurimaid online kogukondi, kelle käest on võimalik erinevate projektide puhul abi küsida.
'''GitHub''' - Kõige esimene versioonihaldus keskkond, mis on kõige suurema kasutajaskonnaga, kõige töökindlam, samas kõige vähem enda käe järgi kohandatav ehk kõige jäigem kui projektil peaksid ilmnema väga erilised integratsiooni või kohandamise vajadused, kuna tegemist on suletud lähtekoodiga tarkvaraga. Samas on loodud funktsionaalsue laiendamiseks GitHub Marketplace <ref>https://github.com/marketplace</ref>, mis pakub nii tasuta kui tasulisi lisafunktsionaalsusi. Nt pakub see kõige detailsema koodi ühtseks kokkusobitamise võimekusega erinevatelt arendajatelt (pull request) <ref>https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab</ref> kui projekti iseloom peaks seda funktsionaalsust vajama. Tasuliste teenuste pakettide osas hinnaklassilt küll kõige kallim <ref>https://github.com/pricing#feature-comparison</ref>, aga samas kõige töökindlam. Tänu kõige suuremale kasutajaskonnale omab ka suurimaid online kogukondi, kelle käest on võimalik erinevate projektide puhul abi küsida.


'''GitLab''' - Loodud GitHubi analoogina kuid silmas pidades kahte kõige olulisemat erinevust: soodsam hind [https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com] ja võimalikult suur paindlikus keskkonda vastavalt enda ja projekti vajadustele kohanda just selliseks, et kõige paremini täita püstitatud eesmärke. GitLab Community Edition puhul on tegemist tasuta vabavaraga mille lähtekood on kõigile vabalt kättesaadav [https://gitlab.com/gitlab-org/gitlab-foss] ja enda serverites kasutamise puhul ka vabalt muudetav vastavalt tekkivatele vajadustele. GitLabi self hosted versiooni on võimalik installeerida põhimõtteliselt misiganes riistvara ja tarkvara kombinatsioonidele. Erinevad pilveteenuse pakkujad, virtuaalmasinad, otse serverisse, Linux, Windows, Puppet, Chef vms. GitLabi on võimalik installida kasutades isegi Dockeri image -id [https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html]. See nõuab loomilikult vastava know-how olemasolu ja kogu tiimi teadlikust eriversiooni kasutamisel. Ka GitLab -il on sisseehitatud erinevate väliste tarkvarade integreerimise võimalused kuid tunduvalt väiksemas mahus kui GitHubil ja Bitbucketil [https://docs.gitlab.com/ee/user/project/integrations/overview.html]. Kuid kuna tegemist on avatud lähtekoodiga tarkvaraga siis on täiendavate integratsioonide loomine tehtud kõigile vabalt võimalikuks ja suhteliselt lihtsaks kui on olemas vastavad teadmised [https://docs.gitlab.com/ee/administration/file_hooks.html]. GitLab -i eeliseks võib pidada näiteks seda, et siin on võimalik repositooriumi omanikul määrata erinevatele kasutajatele erinevaid õiguseid vastavalt nende rollidele.
'''GitLab''' - Loodud GitHub'i analoogina, kuid silmas pidades kahte kõige olulisemat erinevust: soodsam hind <ref>https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com</ref> ja võimalikult suur paindlikkus keskkonda vastavalt enda ja projekti vajadustele kohandada, et täita püstitatud eesmärgid. GitLab Community Edition'i puhul on tegemist tasuta vabavaraga mille lähtekood on kõigile vabalt kättesaadav <ref>https://gitlab.com/gitlab-org/gitlab-foss</ref> ja enda serverites kasutamise puhul ka vabalt muudetav. GitLabi self hosted versiooni on võimalik installeerida põhimõtteliselt misiganes riistvara ja tarkvara kombinatsioonidele. Erinevad pilveteenuse pakkujad, virtuaalmasinad, otse serverisse, Linux, Windows, Puppet, Chef vms. GitLab'i on võimalik installida kasutades isegi Dockeri image -id <ref>https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html</ref>. See nõuab loomulikult vastava know-how olemasolu ja kogu tiimi teadlikkust eriversiooni kasutamisel. Ka GitLab'il on sisseehitatud erinevate väliste tarkvarade integreerimise võimalused, kuid tunduvalt väiksemas mahus kui GitHub'il ja Bitbucket'il <ref>https://docs.gitlab.com/ee/user/project/integrations/overview.html</ref>. Kuna tegemist on avatud lähtekoodiga tarkvaraga, siis on täiendavate integratsioonide loomine tehtud kõigile võimalikuks ja suhteliselt lihtsaks kui on olemas vastavad teadmised <ref>https://docs.gitlab.com/ee/administration/file_hooks.html</ref>. GitLab'i eeliseks võib pidada näiteks seda, et sellega on võimalik repositooriumi omanikul määrata erinevatele kasutajatele erinevaid õiguseid vastavalt nende rollidele.


'''Bitbucket''' - Peamine erinevus eelnevatest on hea ja lihtne sisseehitatud integratsiooni võimalus teiste projekti haldamise ja koostöö tegemise tarkvaradega mille autoriks on Atlassian Corporation nagu näiteks Jira, HipChat, Confluence ja Bamboo. Kui kasutusel on juba eenimetatud tarkvarad siis on versioonihalduse keskkonnana kindlasti heaks valikuks just Bitbucket. Lisaks on võimalik Bitbucketit kasutada nii Git kui ka Mercurial versioonihaldus tarkvaraga. Ka Bitbucketit on oma serverites kasutamise korral võimalik kohandada vastavalt enda vajadustele kuid lähtekoodile saab ligipääsu ainult vastava litsentsi ostmisel [https://www.atlassian.com/licensing/bitbucket-server#cloud-licensing]. Bitbucketi funktsionaalsuste laiendamiseks on loodud Atlassian Marketplace [https://marketplace.atlassian.com/] kust võib leida erinevate arendajate poolt loodud lisavõimalusi. Bitbucketi miinuseks võib pidada seda, et tasuta versiooni saab kasutada vaid kuni 5 -e tiimi liikmega [https://bitbucket.org/product/pricing?ref=stackshare]. Teistel keskkondadel on tasuta versioonide puhul kasutajate arv piiramatu [https://github.com/pricing#feature-comparison], [https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com].
'''Bitbucket''' - Peamine erinevus eelnevatest on hea ja lihtne sisseehitatud integratsiooni võimalus teiste projekti haldamise ja koostöö tegemise tarkvaradega, mille autoriks on Atlassian Corporation, näiteks Jira, HipChat, Confluence ja Bamboo. Kui kasutusel on juba eenimetatud tarkvarad, siis on versioonihalduskeskkonnana kindlasti hea valik just Bitbucket. Lisaks on võimalik Bitbucketit kasutada nii Git kui ka Mercurial versioonihaldustarkvaraga. Ka Bitbucket'it on oma serverites kasutamise korral võimalik kohandada vastavalt enda vajadustele, kuid lähtekoodile saab ligipääsu ainult vastava litsentsi ostmisel <ref>https://www.atlassian.com/licensing/bitbucket-server#cloud-licensing</ref>. Bitbucket'i funktsionaalsuste laiendamiseks on loodud Atlassian Marketplace <ref>https://marketplace.atlassian.com/</ref>, kust võib leida erinevate arendajate poolt loodud lisavõimalusi. Bitbucket'i miinuseks võib pidada seda, et tasuta versiooni saab kasutada vaid kuni 5-liikmelise tiimiga <ref>https://bitbucket.org/product/pricing?ref=stackshare</ref>. Teistel keskkondadel on tasuta versioonide puhul kasutajate arv piiramatu <ref>https://github.com/pricing#feature-comparison</ref>, <ref>https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com</ref>.
 
 
'''Lisainfot nii Git'i kui eeltutvustatud keskkondadega lähemaks tutvumiseks'''
 
'''Git'''
 
1. Dokumentatsioon: https://git-scm.com/doc
 
2. Tutvustavad videod: https://git-scm.com/videos
 
3. Kasutamist õpetavad videod YouTube -s: https://www.youtube.com/results?search_query=git
 
4. Täiendavad koolitused: https://git-scm.com/doc/ext
 
'''GitHub'''
 
1. Tasuta konto tegemine: https://github.com/join?source=pricing-comparison-free
 
2. Dokumentatsioon ja kasutamine: https://help.github.com/en/github/getting-started-with-github
 
3. Youtube kanalid: https://www.youtube.com/github, https://www.youtube.com/channel/UCP7RrmoueENv9TZts3HXXtw
 
4. Hinnavõrdlused: https://github.com/pricing#feature-comparison
 
'''GitLab'''
 
1. Tasuta konto tegemine: https://gitlab.com/users/sign_up
 
2. Dokumentatsioon ja kasutamine: https://about.gitlab.com/get-started/, https://docs.gitlab.com/ee/README.html#new-to-git-and-gitlab, https://docs.gitlab.com/ee/intro/
 
3. Youtube kanal: https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg
 
4. Hinnavõrdlused: https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com
 
'''Bitbucket'''
 
1. Tasuta konto tegemine: https://bitbucket.org/account/signup/?src=pricing_try_free
 
2. Dokumentatsioon ja kasutamine: https://confluence.atlassian.com/bitbucket/bitbucket-cloud-documentation-221448814.html
 
3. Youtube kanalid: https://www.youtube.com/playlist?list=PLaD4FvsFdarSyyGl3ooAm-ZyAllgw_AM5, https://www.youtube.com/playlist?list=PLaD4FvsFdarTVK2utQZegnWNu9Zxrb2KJ
 
4. Hinnavõrdlused: https://bitbucket.org/product/pricing




'''Lõpetuseks'''
'''Lõpetuseks'''


Nagu juba eespool mainitud siis suures osas võimaldavad eeltutvustatud versioonihaldus keskkonnad teha suhteliselt sarnaseid asju. Ei saa otseselt öelda, et üks keskkond on parem kui teine. Valikute langetamisel saavad määravaks pigem subjektiivsed faktorid, mis sõltuvad konkreetsest projektist ning selle vajadustest ja projektiga seotud tiimi suurusest ning nende oskuste ja kogemuste tasemest versioonihaldus keskkondadega töötamisel. Seega lõpetuseks toome siinkohal välja loetelu omavahel seoses olevatest faktoritest, millele võiks otsuseid langetades tähelepanu pöörata sobiva versioonihaldus keskkonna valimisel oma projektide jaoks:
Nagu juba eespool mainitud, siis suures osas võimaldavad eeltutvustatud versioonihalduskeskkonnad suhteliselt sarnaseid funktsionaalsusi. Ei saa otseselt öelda, et üks keskkond on parem kui teine. Eelistus sõltub projekti vajadustest, tiimi suurusest ning tiimi liikmete oskuste ja kogemustebaasist versioonihalduskeskkondadega töötamisel. Lõpetuseks toome siinkohal välja loetelu omavahel seoses olevatest faktoritest, millele võiks otsuseid langetades tähelepanu pöörata sobiva versioonihalduskeskkonna valimisel oma projektide jaoks:


1. Hind
1. Hind


2. Paindlikus ja kohandatavus
2. Paindlikkus ja kohandatavus


3. Integratsiooni võimalused teiste toetavate tarkvaradega
3. Integratsioonivõimalused toetavate tarkvaradega


4. Kasutusmugavus, harjumused ja õppimiskõver (kogu projekti tiimi jaoks)
4. Kasutusmugavus, harjumused ja õppimiskõver (kogu projekti tiimi jaoks)
Line 150: Line 193:
5. "Cloud" või "Self Hosted" versiooni kasutamine
5. "Cloud" või "Self Hosted" versiooni kasutamine


6. Online kogukondade olemasolu ja suurused ning ametlikult pakutavad toetussüsteemid
6. Online kogukondade olemasolu ja suurused ning ametlikult pakutav tugi


7. Vajalike õpetuste ja online info olemasolu
7. Vajalike õpetuste ja online info olemasolu


Loodame, et eeltoodud lühikene versioonihaldus keskkondade tutvustus andis Sulle piisavalt infot ja vajalike lisaallikaid, et natukene paremini orienteeruda selles maailmas ning ennast kiiremini kurssi viia vajaliku infoga otsuste langetamiseks. Meeldivat teekonna jätku ja õigeid otsuseid soovides versioonihaldus keskondadega tutvumisel.
Loodame, et eeltoodud lühikene versioonihalduskeskkondade tutvustus andis Sulle piisavalt infot ja vajalike lisaallikaid, et veidi paremini orienteeruda selles maailmas ning ennast kiiremini kurssi viia vajaliku infoga otsuste langetamiseks. Meeldivat teekonna jätku ja õigeid otsuseid soovides versioonihalduskeskkondadega tutvumisel.
 
 
== '''Allikad''' ==
{{reflist}}

Latest revision as of 22:20, 4 May 2020

Sissejuhatus

Versioonikontrolli [1] kasutatakse erinevates keskkondades. Versioonihaldust võivad pidada tekstitöötlusprogrammid, tabelarvutusprogrammid, veebilehed, sisuhaldussüsteemid kui ka Wikipedia ise. Versioonihaldus võimaldab näha dokumendi vaheseisu kui ka tagasi pöörata dokumendi eelnevasse versiooni.

Versioonihaldus

Iga arendaja puutub varem või hiljem kokku versioonihaldusega. Versioonihaldus võimaldab arendajal kirjutatud koodi versioneerida. On võimalik näha minevikus tehtud muudatusi, kes need muudatused tegi, miks tegi (põhjus koos kommentaaridega) ja millal need tehtud on. See kõik on vajalik kirjutatud koodi paremaks haldamiseks ning kõige parema tulemuse annavad need võimalused siis kui mitu arendajat koostöös tegelevad sama projektiga.

Versioonihaldussüsteemid

Versioonihaldussüsteemid on need rakendused mida kasutavad versioonihalduskeskkonnad projektifailide haldamiseks. Versioonihalduse keskkondi on (programmeerimise) aegade algusest loodud erinevaid, erinevatel põhjustel, erinevate inimeste poolt. Üheks suurimaks keskkonnaks on GitHub millel on kohe kannul GitLab ning palju ei jää maha ka Bitbucket. Eelnimetatud süsteemid on ehitatud Git'i peale, mis on üks vanematest versioonihaldussüsteemidest. Peale Git'i on veel CVS, SVN, Mercurial, Monotone jm.

Versioonihalduskeskkonnad on loonud mitmeid oma pakette ja teenuseid laiendamaks Giti funktsionaalsust. Lisaks on loodud tasulisi teenuseid ja tooteid meeskondadele ning ettevõtetele, mis pakuvad erinevaid võimalusi ja funktsioone veelgi parema koostöö kogemuse pakkumiseks. Üldiselt pakutakse põhifunktsionaalsust kõigile, kuid suuremate inimeste hulga ja lisavõimaluste puhul tahetakse seda paketi, teenuse või plaanina pakkuda, olenevalt, kuidas keskkond seda nimetanud on.

Rõhku on pandud ka turvalisusele. Näiteks saab kasutada teavitussüsteemi kui projektis kasutatavas komponendis on leitud turvanõrkus või mõni ligipääsu võti on jäänud lähtekoodi. Jällegi, täpsemad ja veel turvalisust lisavad teenused on kasutatavad ainult parema plaani omanikele. Versioonihalduskeskkonna poolt pakutakse ettevõtte tüüpi plaani tellinutele lisaks veel kasutajatuge.

Repositooriumid

Projektid on repositooriumid, kust sikutatakse faile (pull) [2], lükatakse neid üles (push) [3], kloonitakse omale (clone) [4], liigutatakse ringi (mv) [5], kustutatakse (rm) [6] jpm. Versioonihalduskeskkonnad hoiustavad repositooriumeid ning lihtsustavad arendajate koostööd. Projekti sikutamisega tiritakse projektifailid omale soovitud keskkonda nende kallal töötamiseks. Muudatused saadetakse projekti tagasi teadmisega, et vanem versioon jääb alles. Arendajal on võimalus projekti ka mitmes seadmes muuta eelnevalt mainitud käskude abil. Mitmes arvutis tööd tehes on võimalik tulemus mestida (merge) [7] ning saab kõik jälle ühtseks.

Eelnimetatud käsklusi saab anda nii käsureal kui versioonihalduskeskkonna graafilise kasutajaliidese abil. Igal huvilisel on võimalik minna uudistama omale huvi pakkuvat avalikku repositooriumit. Näiteks on võimalik uurida, kuidas on loodud meie ID-kaardi tarkvara. Sellist koodis tuhnimist isegi soovitatakse, et õppida parimatelt. Varasemalt, kui versioonihalduskeskkondi ei olnud, käidi lausa prügikastist teiste programmeerijate äravisatud väljaprinte uudistamas, et hankida teadmisi programmeerimisest (nt. on teinud nii Bill Gates).

Keskkondadest täpsemalt

Järgnevalt tutvustame kolme valitud versioonihalduskeskkonda lähemalt. Vaatame mis põhjusel ja kelle poolt erinevad keskkonnad loodi. Millisteks on need keskkonnad arenenud ning milliseid funktsionaalsusi pakuvad. Versioonihalduskeskkonnad on tulnud pika maa ning lisanud oma arsenali erinevaid lisafunktsioone alates turvalisust puudutavaid lisasi kui ka täiendavaid taristuga integreerimise võimalusi.

GitHub

GitHub Inc on USA-s asuv globaalne ettevõte, mille peamiseks tooteks on Git-il baseeruv tarkvara versioonihalduskeskkond GitHub [8]. (Kuigi sisuliselt võiks GitHubi kasutada mistahes tüüpi dokumentide versioonihalduseks, kasutatakse seda kõige laialdasemalt siiski tarkvara jaoks [9].) Git ise on käsureal põhinev tööriist, GitHub aga üks selle veebipõhine graafiline kasutajaliides, mis pakub mitmeid lisafunktsioone.

Ajalugu

GitHubi arendus algas 2007. aastal ning Chris Wanstrath, P. J. Hyett ja Tom Preston-Werner avalikustasid platformi 2008. aasta aprillis. Algselt tuntud kui Logical Awesome LLC [10], muudeti nimi selguse mõttes 2010. aastal GitHubiks [11]. Juba 2010. aastal jõudis GitHub 1 miljoni repositooriumini [12] ning 2018. aastal oli see arv juba üle 100 miljoni [13].

2007. aastal, kui töö GitHubi kallal algas, oli Git suhteliselt vähekasutatud versioonihaldussüsteem ning puudusid kommertsiaalsed Giti hostimisvõimalused. GitHub loodigi esialgu mõttega, et seda tühja kohta täita ning lisati võimalused koodi muudatuste paremaks jälgimiseks. GitHub lihtsustas oluliselt avatud lähtekoodiga projektide arendamist ja koostööd ning kasvas omaette kogukonnaks, mida on nimetatud ka arendajate "Facebookiks", aga piltide ja elusündmuste jagamise asemel postitavad inimesed projektide koode ning teised arendajad kommenteerivad, pakuvad välja uusi lahendusi ning täiendavad koodi vastavalt enda vajadustele. Brian Doll, GitHubi strateegia asepresident on öelnud:

„If you look at the top 100 sites, you’ve got a handful of social sites, thirty flavors of Google with national footprints, a lot of media outlets — and GitHub.“

Tänapäeval on GitHub koduks lugematutele avatud lähtekoodiga projektidele, muuhulgas kasutavad GitHubi ka Google, Facebook, Twitter ja Microsoft. [14]

Alates 2018. aastast on GitHub Microsofti filiaal [15] [16].

GitHubist lähemalt

GitHubi tarkvara arendati välja Ruby on Rails ja Erlangi baasil. Kolm peamist GitHubi funktsionaalsust on fork, pull request ja merge. Forking tähendab, et repositoorium kopeeritakse ühelt kasutajalt teise kasutaja repositooriumi. See tähendab, et kasutaja kellel enne ei olnud projekti kirjutamise õigust, saab seda enda kasutaja alt muuta, ning seejärel saata pull requesti originaalomanikule. Viimane saab seejärel soovi korral mergeida muutes originaalrepositooriumi ühe nupuvajutusega.

Enne GitHubi oli kogu protsess avatud lähtekoodiga projektides palju keerulisem ja pikem: projekti lähtekoodi tuli muuta lokaalselt, kirjutada ise nimekiri muutustest (nimega patch) ja see tuli meiliga saata projekti omanikule, kes siis pidi muutused üle vaatama ja need ise sisse viima. GitHubis on igal inimesel profiil, kus on näha inimeste "reputatsioon", mis suureneb iga kord kui inimese pull request heaks kiidetakse. See võimaldab projekti autoril näha, kes tema projektile muudatusettepanekuid esitavad, nende "reputatsiooni" ja varasemaid projekte. Muudatusettepanekute üle saab ka avalikult arutleda. [17]

Lähtekood, litsents

GitHubi tarkvara on suletud lähtekoodiga. Enterprise serveri litsentsiga on võimalik tutvuda lähemalt GitHub Enterprise veebilehel. [18]

Teenused

GitHub pakub laias laastus kolme paketitüüpi: tasuta versioon, Pro/Team versioon ja Enterprise. Kõikide pakettidega saab töötada piiramatu arvu inimestega piiramatu arvu avalike repositooriumitega, kasutades kõiki funktsionaalsusi, ning piiramatu arvu privaatsete repositooriumitega. Privaatsete repositooriumite võimalused on aga piiratud erineval määral. Näiteks GitHub Free for user accounts (tasuta versioon üksikkasutajale) lubab privaatsete repositooriumite korral töötada kuni kolme inimesega ühe projekti kallal. Github Pro ja Team maksavad 4$ kuus kasutaja kohta, ning Enterprise 21$ kuus kasutaja kohta. On olemas veel GitHub One, mis pakub veelgi lisavõimalusi Enterprise plaanile (Advanced Security, Insights, Learning Lab, and Premium Plus Support). [19] Erinevate pakettide võimalustega ja hindadega on võimalik lähemalt tutvuda GitHubi koduleheküljel. [20]

Kasutajamugavus, juurutamine ja integratsioonivõimalused

GitHub keskendub peamiste funktsioonide töökindlusele ja kättesaadavusele, ning delegeerib lisavõimalused välistele platformidele nagu Travis ja Waffle. GitHubi konkurent GitLab pakub rohkem integratsioonivõimalusi, kuid GitHubi peamiseks eeliseks on selle arvukas ja aktiivne kasutajaskond. Samuti on GitHubiga võimalik kasutada arvukaid väliseid platforme (erinevate tööriistadega on võimalik tutvuda lähemalt siin: [21]).

GitLab

GitLab Inc on USA's asuv tarkvaraettevõte, kelle peakorter asub San Franciscos. GitLab pakub tarkvaraarenduseks mõeldud erinevaid tööriistu ning pakettlahendusi, keskendudes peamiselt DevOps tarkvaraarenduse kultuurile omastele teenustele ja toodetele. [22]

Algusaastad

GitLab’i sünnihetkeks võib pidada 2011. aasta oktoobrikuud, mil GitLab’i esimene versioon päevavalgust nägi. GitLab’i loomisel kandis võtmeisiku rolli ukrainlane (inglise päraselt) Dmitriy Zaporozhets. GitLab kirjutati esialgu Ruby’s. Veidi ajas tagasi minnes võib lühidalt vaadata, millest ajendatult GitLab üldse loodi. Mõni aasta varem (2008) oli loodud GitHub, kellele GitLab on tänaseks üks peamisi konkurente. GitLab’i looja Dmitriy Zaporozhets’i töötas parajasti ettevõttes nimega Sphere Software, kus ta tihtipeale kasutas versioonihaldustööriistana GitHub’i. Probleem oli aga selles, et GitHub’i pakutavad teenused olid mõneti jäigad ning teisalt ka kallid. Dmitriy sõnul pidid nad töötama aegunud tööriistadega või ostma sisse kallihinnalisi tööriistasid, mis pärssisid nende tööd ega lasknud neil keskenduda oma põhilistele tööülesannetele. Hiljem on ta öelnud, et see oligi peamine ajend GitLab’i kui kvaliteetse ja taskukohasema tööriista loomiseks. [23]

Edulugu

Kuna GitLab oli esialgu siiski pigem hobiprojekt, mis ei toonud rahalist tulu, jätkas Dmitriy palgalist tööd, et tulla toime igapäevaste kulutustega. GitLab’i kasutajate arv kasvas ning teiste hulgas hakkas seda kasutama ka tema enda tööandja. Vaatamata mitmele katsele raha teenida, mh pakkudes tasulist support-teenust kui kogudes annetusi, ei osutunud need kuigi edukaks. Olulise muutuse tõi hollandlasest ettevõtja Sid Sibrangy, kel oli tekkinud huvi GitLab’i vastu ning soovis seda oma ettevõttes kasutada. Mõni aeg hiljem oli Dmitriy jõudnud oma elus etappi, kus ta soovis end täielikult pühendada GitLab’i arendamisse. Saatuse sümbolina pakkus Sid Sibrangy, et võtab ta palgaliselt tööle tingimusel, et Dmitriy aitab Sid’i tema ettevõttes. Nii läkski ja umbes aasta hiljem, 2014. aastal registreeriti GitLab ettevõttena, seejärel võeti tööle rohkem inimesi ning 2016. aastaks töötas ettevõttes juba ligi 100 inimest. Täna on GitLab’is tööl ca 1100 töötajat ning ettevõtte väärtus on hinnanguliselt 2,7 miljardit USA dollarit. Ajapikku on osa GitLab’ist ümber kirjutatud Go’s ja Vue.js’is. [24]

Litsents, lähtekoodi avalikkus

GitLab on saadaval nii tasuta kui tasulise versioonina. Community Edition on avatud lähtekoodiga ning omab (litsentsimaailmas võrdlemisi pehmet) MIT-litsentsi, mis teeb temast kasuliku, vabalt ning laialdaselt kasutatava tööriista. Samuti on saadaval tasuline Enterprise Edition, mis ei vasta kõigile avatud lähtekoodiga tarkvara tingimustele (kuigi kood on kätte saadav, mis lihtsustab trial-versiooni pakkumist) ning on mõeldud tasulise teenusena, sisaldades Community Edition’iga võrreldes enam tööriistu, tuge ning muid võimalusi.

GitLab’i dokumentatsiooni, lähtekoodi ning juhenditega on võimalik tutvuta GitLab’i koduleheküljel. [25]

GitLab teenused

GitLab pakub erinevaid teenuseid, mis on seotud tarkvara arendusega. Nende peamine toode või tootepakett on DevOps lifecycle, mis sisaldab erinevaid teenuseid, alustades arenduse planeerimisest kuni toode lansseerimiseni – kõik saab teostada GitLab’i vahendusel. Kõige paremini iseloomustab GitLab’i teenuseid nende endi kodulehel paiknev kirjeldus:

„With GitLab, you get a complete CI/CD toolchain in a single application. One interface. One conversation. One permission model. Thousands of features. You'll be amazed at everything GitLab can do today. And we're just getting started.“ - GitLab.

GitLab pakub 30-päeva pikkust trial-perioodi täisversioonile, mille möödudes on võimalik edasi kasutada free-ligipääsuga teenuseid. Alternatiivina saab osta ka tasulisi teenuseid – Bronze, Silver ja Gold-paketid, vastavalt 4$-, 19$- ja 99$-kuutasuga. Teenuste paketipõhise varieeruvusega on võimalik tutvuda GitLab'i koduleheküljel. [26] Samuti on GitLab aktiivne sotsiaalmeedias, omades kontot YouTube keskkonnas [27]

Kasutajamugavus, juurutamine ja integratsioonivõimalused

GitLab on täna selgelt väiksem kui tema „suurem vend“ GitHub, kuid toodete, teenuste ja võimaluste osas on nad teinud suurepärast tööd. GitLab’i kasutajamugavus on kõrgel tasemel. Tema juurutamine ning integratsioonivõimalused on tõenäoliselt paremad, kui GitHub’il. Näiteks on GitLab’il väga põhjalik dokumentatsioon selle kohta, mil viisil on võimalik kolida konkurentidest – GitHub’ist või Bitbucketist – GitLab’i platvormile. Võrdluseks – GitHub nii põhjalikku dokumentatsiooni ei paku.

GitLab’i kasutajatel on võimalik kasutada paralleelselt või koosmõjus ka teisi tööriistu, mille sarnaseid GitLab küll pakub, aga klient ei soovi osta, nt agiilses arenduses kasutatav Jira. Lisaks loovad kasutajamugavust ning pakuvad suurepärast integratsioonivõimalust erinevate plugin’ite näol - näiteks Jetbrains’i toodetele.

Bitbucket

Bitbucket on Git’il põhinev lähtekoodide ja arendusprojektide repositooriumite hoidla ja koostöö tegemise tööriist tiimidele. Bitbucket kuulub Atlassian Corporation Plc’le. Bitbucket'i eeliseks teiste hoidlatega võrreldes on see, et Bitbucket integreerub lihtsasti teiste Atlassian’i tarkvaradega nagu Jira, HipChat, Confluence ja Bamboo. Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center.

Ajalugu

Bitbucket oli varem iseseisev startup, mille asutas Jesper Nøhr. 29. septembril 2010. aastal ostis Bitbucketi’i ära Atlassian Corporation Plc. [28] Algselt pakkus Bitbucket ainult Mercurial’i versioonihaldustarkvara tuge. 2011. aastal alustati ametlikult Giti versioonihaldustarkvara toetamist. [29] 2017. aasta veebruaris teatas Bitbucket, et jõudis oma platvormil 6 miljoni arendaja ja miljoni meeskonnani. [30] 2018. aasta aprillis teatas Atlassian, et Bitbucket jõudis 10 miljoni registreeritud kasutaja ja üle 28 miljoni koodihoidlani. [31]

Lähtekoodi avalikkus

Bitbucket Serveri lähtekood on avalik kõigile litsentsi omanikele.[32]

Teenused

Bitbucketil on kolm mudelit: Cloud, Bitbucket Server ja Data Center. Bitbucketi Cloud on kirjutatud Pythonis, kasutades Django veebiraamistikku. Bitbucket Cloud asub Atlassian'i serverites ja sellele pääseb ligi URL-i kaudu. Bitbucket Cloud’il on sisseehitatud plugin’id, mis võimaldavad lihtsasti oma koodi arendada, testida ja juurutada otse Bitbucket’ist. Bitbucket Server (endise nimega Stash [33]) on Java-s kirjutatud ja Apache Maveniga loodud Git-serveri ja veebiliidese kombinatsioonitoode. [34] See võimaldab kasutajatel teha Giti põhitoiminguid ning pakub integratsiooni ka teiste Atlassian'i tööriistadega. Bitbucket Server on kommertstarkvaratoode. See annab suurema privaatsuse koodi repsitooriumite üle, sest ettevõttel on võimalus koodi hoiustada enda serverites. Bitbucket Data Center näeb kasutajatele välja nagu üksik Bitbucket Serveri eksemplar, kuid seda on võimalik kasutada erinevate serverite pealt ning sellel on mõned lisaeelised Bitbucket Serveri ees.

Bitbucket Cloud’il on kolm hinnataset: Tasuta, Standard ja Premium. Tasuta paketi kasutajatel võib olla piiramatu hulk avalikke ja privaatseid hoidlaid. See, kui palju kasutajaid saab avalikke andmehoidlaid redigeerida / lugeda, pole piiratud, privaathoidlad on aga piiratud 5 kasutajaga, mida saab suurendada tasulise paketi valimisega. Standard ja Premium paketi hind kujuneb vastavalt privaathoidlate kasutajate arvule. Bitbucket on õpilastele ja õpetajatele tasuta, kui nad registreeruvad akadeemilise e-posti aadressiga. Teenus on tasuta ka avatud lähtekoodiga projektide jaoks, kui see vastab Atlassian’i poolt antud nõuetele. [35] Bitbucket Serveri ja Bitbucket Data Center’i puhul kujuneb hind samuti vastavalt kasutajate arvule, kuid nende puhul tasuta versiooni pole. Akadeemilistele asutustele on Bitbucket Serveri litsents 50% soodustusega.[36]

Kasutajamugavus, juurutamine ja integratsioonivõimalused

Bitbucket’i eelis on erinevate integreerimisvõimaluste rohkus ja sisseehitatud ühilduvus. Bitbucket integreerub lihtsasti teiste Atlassian'i poolt pakutud tarkvaratoodetega nagu näiteks JIRA, HipChat ja Bamboo. Kasutajatel on ka võimalus kasutada Atlassiani Marketplace’i, et täiustada nii Bitbucket’it kui ka teisi kasutusel olevaid Atlassian'i tooteid. Lisaks on Bitbucket’il ka paindlik hinnapoliitika. Teenuse kasutamise hind kujuneb töötajate arvu pealt ning see aitab ettevõttel märkimisväärselt kokku hoida võrreldes näiteks GitHub'i teenuse ostmisega. Miinuseks võiks olla asjaolu, et kogukonna suuruse poolest jääb Bitbucket tugevalt alla turuliider GitHub’ile.[37]

Kokkuvõte

Iga tõsisema tarkvaraprojekti loomisel tuleb projekti koodi jagada mitmete arendajatega. Lisaks tuleb erinevate arendajate poolt loodud, muudetud, parandatud ja täiendatud koodi hallata ning erinevatel etappidel kokku koondada ühtselt töötavaks tarkvaraks. Seda aitavad korraldada erinevad versioonihaldussüsteemid, millest kõige populaarsemaks on kujunenud jagatud süsteemil (Distributed Version Control System - DVCS) [38] baseeruv Git [39] [40], mille kasutamisel on versioonihalduskeskkondadest valida kolme peamise vahel, mida eelpool on tutvustatud: Github, Gitlab või Bitubucket. Selleks, et valida nii projekti enda kui projektiga tegeleva tiimi jaoks parim lahendus, on oluline aru saada nende keskkondade peamistest erinevustest ja sarnasustest.

Peamised võrdlusmomendid

Kuigi tänaseks päevaks võib suures pildis öelda, et kõik eeltutvustatud vesrsioonihalduskeskkonnad võimaldavad teha praktiliselt sarnaseid asju, toome siinkohal siiski välja mõningad erinevused ja olulised kriteeriumid, mis võivad saada määravaks, et vastata küsimusele: "Millist versioonihaldus keskkonda ja millisel juhul oleks siis ikkagi mõtekas kasutada?". Sellele küsimusele vastamist tuleks alustada eelkõige sellest, et tuleks määratleda, milline on projekti sisu ja millised on projektis osalejate varasemad oskused ning kogemused versioonihalduskeskkondade kasutamisel. Tuleks selgeks teha, kas saab kasutada avalikke repositooriumeid (millel puuduvad piirangud) või tuleb kasutada privaatseid repositooriumeid (millel on peal erinevad piirangud olenevalt keskkonnast). Samuti tuleb arvestada tiimi suurusega, sest olenevalt keskkonnast tekivad piirangud ning sõltub teenusepaketi maksumus olenevalt tiimi liikmete arvust. Tiimi puhul on oluline arvestada nende varasemat kogemust erinevate keskkondade kasutamisel, kuna uue keskkonna kasutamise selgeks tegemise õppimiskõver võib olla üsna ajamahukas ja seda tuleb arvestada projekti tähtaegadesse. Kui ikka 90% tiimi liikmetest on harjunud kasutama näiteks Bitbucketit, siis oleks mõistlik kasutada seda ka arutluse all oleva projekti puhul, et vältida ajakulu õppimisele ja võimalike vigadega tegelemisele, mis tulenevad oskamatusest keskkonda kasutada. Järgnevalt on välja toodud peamised erinevused kolme versioonihaldus keskkonna vahel kuid põhjalikuma analüüsi jaoks leiab täiendavat infot järgnevatelt linkidelt: [41], [42], [43], [44].

GitHub - Kõige esimene versioonihaldus keskkond, mis on kõige suurema kasutajaskonnaga, kõige töökindlam, samas kõige vähem enda käe järgi kohandatav ehk kõige jäigem kui projektil peaksid ilmnema väga erilised integratsiooni või kohandamise vajadused, kuna tegemist on suletud lähtekoodiga tarkvaraga. Samas on loodud funktsionaalsue laiendamiseks GitHub Marketplace [45], mis pakub nii tasuta kui tasulisi lisafunktsionaalsusi. Nt pakub see kõige detailsema koodi ühtseks kokkusobitamise võimekusega erinevatelt arendajatelt (pull request) [46] kui projekti iseloom peaks seda funktsionaalsust vajama. Tasuliste teenuste pakettide osas hinnaklassilt küll kõige kallim [47], aga samas kõige töökindlam. Tänu kõige suuremale kasutajaskonnale omab ka suurimaid online kogukondi, kelle käest on võimalik erinevate projektide puhul abi küsida.

GitLab - Loodud GitHub'i analoogina, kuid silmas pidades kahte kõige olulisemat erinevust: soodsam hind [48] ja võimalikult suur paindlikkus keskkonda vastavalt enda ja projekti vajadustele kohandada, et täita püstitatud eesmärgid. GitLab Community Edition'i puhul on tegemist tasuta vabavaraga mille lähtekood on kõigile vabalt kättesaadav [49] ja enda serverites kasutamise puhul ka vabalt muudetav. GitLabi self hosted versiooni on võimalik installeerida põhimõtteliselt misiganes riistvara ja tarkvara kombinatsioonidele. Erinevad pilveteenuse pakkujad, virtuaalmasinad, otse serverisse, Linux, Windows, Puppet, Chef vms. GitLab'i on võimalik installida kasutades isegi Dockeri image -id [50]. See nõuab loomulikult vastava know-how olemasolu ja kogu tiimi teadlikkust eriversiooni kasutamisel. Ka GitLab'il on sisseehitatud erinevate väliste tarkvarade integreerimise võimalused, kuid tunduvalt väiksemas mahus kui GitHub'il ja Bitbucket'il [51]. Kuna tegemist on avatud lähtekoodiga tarkvaraga, siis on täiendavate integratsioonide loomine tehtud kõigile võimalikuks ja suhteliselt lihtsaks kui on olemas vastavad teadmised [52]. GitLab'i eeliseks võib pidada näiteks seda, et sellega on võimalik repositooriumi omanikul määrata erinevatele kasutajatele erinevaid õiguseid vastavalt nende rollidele.

Bitbucket - Peamine erinevus eelnevatest on hea ja lihtne sisseehitatud integratsiooni võimalus teiste projekti haldamise ja koostöö tegemise tarkvaradega, mille autoriks on Atlassian Corporation, näiteks Jira, HipChat, Confluence ja Bamboo. Kui kasutusel on juba eenimetatud tarkvarad, siis on versioonihalduskeskkonnana kindlasti hea valik just Bitbucket. Lisaks on võimalik Bitbucketit kasutada nii Git kui ka Mercurial versioonihaldustarkvaraga. Ka Bitbucket'it on oma serverites kasutamise korral võimalik kohandada vastavalt enda vajadustele, kuid lähtekoodile saab ligipääsu ainult vastava litsentsi ostmisel [53]. Bitbucket'i funktsionaalsuste laiendamiseks on loodud Atlassian Marketplace [54], kust võib leida erinevate arendajate poolt loodud lisavõimalusi. Bitbucket'i miinuseks võib pidada seda, et tasuta versiooni saab kasutada vaid kuni 5-liikmelise tiimiga [55]. Teistel keskkondadel on tasuta versioonide puhul kasutajate arv piiramatu [56], [57].


Lisainfot nii Git'i kui eeltutvustatud keskkondadega lähemaks tutvumiseks

Git

1. Dokumentatsioon: https://git-scm.com/doc

2. Tutvustavad videod: https://git-scm.com/videos

3. Kasutamist õpetavad videod YouTube -s: https://www.youtube.com/results?search_query=git

4. Täiendavad koolitused: https://git-scm.com/doc/ext

GitHub

1. Tasuta konto tegemine: https://github.com/join?source=pricing-comparison-free

2. Dokumentatsioon ja kasutamine: https://help.github.com/en/github/getting-started-with-github

3. Youtube kanalid: https://www.youtube.com/github, https://www.youtube.com/channel/UCP7RrmoueENv9TZts3HXXtw

4. Hinnavõrdlused: https://github.com/pricing#feature-comparison

GitLab

1. Tasuta konto tegemine: https://gitlab.com/users/sign_up

2. Dokumentatsioon ja kasutamine: https://about.gitlab.com/get-started/, https://docs.gitlab.com/ee/README.html#new-to-git-and-gitlab, https://docs.gitlab.com/ee/intro/

3. Youtube kanal: https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg

4. Hinnavõrdlused: https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com

Bitbucket

1. Tasuta konto tegemine: https://bitbucket.org/account/signup/?src=pricing_try_free

2. Dokumentatsioon ja kasutamine: https://confluence.atlassian.com/bitbucket/bitbucket-cloud-documentation-221448814.html

3. Youtube kanalid: https://www.youtube.com/playlist?list=PLaD4FvsFdarSyyGl3ooAm-ZyAllgw_AM5, https://www.youtube.com/playlist?list=PLaD4FvsFdarTVK2utQZegnWNu9Zxrb2KJ

4. Hinnavõrdlused: https://bitbucket.org/product/pricing


Lõpetuseks

Nagu juba eespool mainitud, siis suures osas võimaldavad eeltutvustatud versioonihalduskeskkonnad suhteliselt sarnaseid funktsionaalsusi. Ei saa otseselt öelda, et üks keskkond on parem kui teine. Eelistus sõltub projekti vajadustest, tiimi suurusest ning tiimi liikmete oskuste ja kogemustebaasist versioonihalduskeskkondadega töötamisel. Lõpetuseks toome siinkohal välja loetelu omavahel seoses olevatest faktoritest, millele võiks otsuseid langetades tähelepanu pöörata sobiva versioonihalduskeskkonna valimisel oma projektide jaoks:

1. Hind

2. Paindlikkus ja kohandatavus

3. Integratsioonivõimalused toetavate tarkvaradega

4. Kasutusmugavus, harjumused ja õppimiskõver (kogu projekti tiimi jaoks)

5. "Cloud" või "Self Hosted" versiooni kasutamine

6. Online kogukondade olemasolu ja suurused ning ametlikult pakutav tugi

7. Vajalike õpetuste ja online info olemasolu

Loodame, et eeltoodud lühikene versioonihalduskeskkondade tutvustus andis Sulle piisavalt infot ja vajalike lisaallikaid, et veidi paremini orienteeruda selles maailmas ning ennast kiiremini kurssi viia vajaliku infoga otsuste langetamiseks. Meeldivat teekonna jätku ja õigeid otsuseid soovides versioonihalduskeskkondadega tutvumisel.


Allikad

  1. https://en.wikipedia.org/wiki/Version_control
  2. https://git-scm.com/docs/git-pull
  3. https://git-scm.com/docs/git-push
  4. https://git-scm.com/docs/git-clone
  5. https://git-scm.com/docs/git-mv
  6. https://git-scm.com/docs/git-rm
  7. https://git-scm.com/docs/git-merge
  8. https://en.wikipedia.org/wiki/GitHub
  9. https://techcrunch.com/2012/07/14/what-exactly-is-github-anyway/
  10. http://logicalawesome.com/
  11. https://github.blog/2010-01-22-new-year-new-company/
  12. https://github.blog/2010-07-25-one-million-repositories/
  13. https://venturebeat.com/2018/11/08/github-passes-100-million-repositories/
  14. https://medium.com/@smhatre59/the-untold-story-of-github-132840f72f56
  15. https://techcrunch.com/2018/06/04/microsoft-has-acquired-github-for-7-5b-in-microsoft-stock/
  16. https://github.blog/2018-10-26-github-and-microsoft/
  17. https://techcrunch.com/2012/07/14/what-exactly-is-github-anyway/
  18. https://enterprise.github.com/license
  19. https://github.blog/2020-04-14-github-is-now-free-for-teams/
  20. https://help.github.com/en/github/getting-started-with-github/githubs-products
  21. https://github.com/marketplace
  22. https://en.wikipedia.org/wiki/GitLab
  23. https://about.gitlab.com/company/history/
  24. https://ain.ua/en/2018/09/16/gitlab-story/
  25. https://about.gitlab.com/
  26. https://about.gitlab.com/pricing/gitlab-com/feature-comparison/
  27. https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg
  28. https://web.archive.org/web/20160303204710/http://www.itwire.com/it-industry-news/strategy/42202-atlassian-snatches-bitbucket
  29. https://bitbucket.org/blog/bitbucket-now-rocks-git
  30. https://bitbucket.org/blog/bitbucket-cloud-5-million-developers-900000-teams
  31. https://bitbucket.org/blog/celebrating-10-million-bitbucket-cloud-registered-users
  32. https://www.atlassian.com/licensing/bitbucket-server#server-licensing
  33. https://confluence.atlassian.com/bitbucketserver/bitbucket-rebrand-faq-779298912.html
  34. https://developer.atlassian.com/server/bitbucket/how-tos/building-bitbucket-server-from-source-code/
  35. https://www.atlassian.com/software/views/open-source-license-request
  36. https://bitbucket.org/product/pricing
  37. https://www.business2community.com/business-innovation/bitbucket-vs-github-best-version-control-software-business-01623901#Gdvujvclq5Ao2X0X.97
  38. https://scmquest.com/centralized-vs-distributed-version-control-systems/
  39. https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html
  40. https://www.atlassian.com/git/tutorials/what-is-git
  41. https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab
  42. https://www.gangboard.com/blog/github-vs-gitlab-vs-bitbucket
  43. https://www.geeksforgeeks.org/bitbucket-vs-github-vs-gitlab/
  44. https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html
  45. https://github.com/marketplace
  46. https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab
  47. https://github.com/pricing#feature-comparison
  48. https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com
  49. https://gitlab.com/gitlab-org/gitlab-foss
  50. https://www.amarinfotech.com/gitlab-vs-github-vs-bitbucket.html
  51. https://docs.gitlab.com/ee/user/project/integrations/overview.html
  52. https://docs.gitlab.com/ee/administration/file_hooks.html
  53. https://www.atlassian.com/licensing/bitbucket-server#cloud-licensing
  54. https://marketplace.atlassian.com/
  55. https://bitbucket.org/product/pricing?ref=stackshare
  56. https://github.com/pricing#feature-comparison
  57. https://about.gitlab.com/pricing/index.html?ref=stackshare#gitlab-com