Kad mēs iedziļināmies programmēšanas pasaulē vai sākam eksperimentēt ar operētājsistēmām, piemēram, Linux, ļoti bieži sastopamies ar terminu "repozitorijs". Būtībā mēs varam teikt, ka repozitorijs ir digitāla krātuve , kurā tiek glabāti dati, dokumenti un jo īpaši pirmkods, lai to varētu izgūt, modificēt un koplietot izstrādātāju kopiena vai konkrēta organizācija.
Lai gan daudzi cilvēki domā, ka repozitoriji paredzēti tikai failu glabāšanai, patiesībā tie ir būtiski, lai mūsdienu programmatūra būtu mērogojama un droša . Sākot ar versiju kontroli, kas neļauj nejauši izdzēst kolēģa darbu, līdz serveriem, kas ļauj instalēt lietojumprogrammu ar vienu komandu, repozitoriji ir mūsdienu programmatūras inženierijas sirds.
Repozitoriju veidi atkarībā no to mērķa

Ne visi repozitoriji dara vienu un to pašu; pastāv plaša dažādība atkarībā no tā, kas jums jāuzglabā un kā vēlaties to pārvaldīt. Piemēram, versiju kontroles repozitoriji koncentrējas uz pirmkoda arhivēšanu un visu mazo veikto izmaiņu reģistrēšanu, ļaujot izstrādātājiem atgriezties pie iepriekšējām versijām, ja kaut kas noiet greizi (slavenā "atcelšana"). Klasiski piemēri šeit būtu GitHub, SVN vai CVS.
No otras puses, mums ir programmatūras repozitoriji , kas ir ļoti izplatīti GNU/Linux ekosistēmā. Neapstrādāta koda vietā šeit mēs atrodam iepriekš kompilētas pakotnes, kas ir gatavas instalēšanai, kā arī to metadatus un atkarības. Šīs repozitoriji var būt attālināti, izvietoti mākoņserveros vai lokāli, piemēram, instalācijas DVD. Lai to visu pārvaldītu, tiek izmantoti pakotņu pārvaldnieki , piemēram, APT Debian mobilajām ierīcēm , yum Red Hat vai zypper openSUSE.
Pastāv arī citas specifiskākas variācijas:
- Metadatu krātuves: Izmanto sarežģītās infrastruktūrās, lai uzglabātu informāciju par sistēmas kontekstu un vidi, nepieskaroties avota kodam.
- Dokumentu serveru krātuves: Tāpat kā arXiv, kur zinātniskos rakstus publicē un pārskata eksperti, pirms tie tiek publiskoti.
- CASE repozitoriji: Īpaši izstrādāts datorizētai programmatūras izstrādei, uzglabājot visu projekta dokumentāciju un datus.
Versiju kontrole: Git un SVN sadursme

Programmatūras izstrādātājiem pareizā versiju kontroles rīka izvēle ir ļoti svarīga. Šeit noder Git un SVN. Lai gan to mērķis ir versiju pārvaldība, tie darbojas pilnīgi atšķirīgi. Git ir izkliedēta sistēma , kas nozīmē, ka katram izstrādātājam ir pilnīga versiju vēstures kopija savā datorā. Tas padara to neticami ātru un ļauj strādāt bezsaistē.
Turpretī SVN izmanto centralizētu modeli . Ir viens serveris, kurā tiek glabāta visa vēsture, un lietotājiem ir jāpieslēdzas tam, lai skatītu vecākas versijas vai augšupielādētu izmaiņas. Lai gan Git ir ļoti elastīgs ar atzariem, šis process SVN bieži vien ir apgrūtinošāks. Turklāt SVN ir priekšrocība projektos ar daudziem bināriem failiem , jo tas ļauj bloķēt failus, lai neviens cits tos nevarētu rediģēt, kamēr kāds ar tiem strādā — kaut ko tādu Git nepiedāvā iebūvēti.
Darbplūsmas un sadarbība pakalpojumā GitHub

Izmantojot tādas platformas kā GitHub, darbplūsma kļūst daudz organizētāka, pateicoties galvenajiem jēdzieniem. Zarošanās ietver galvenā koda kopijas izveidi, lai izstrādātu jaunu funkciju vai labotu kļūdu, nepārtraucot esošo darba versiju. Kad programmētājs ir pabeidzis izmaiņas, viņš veic izmaiņu apstiprinājumu (commit) , kas būtībā saglabā izmaiņas ar aprakstošu piezīmi.
Lai veiktu šīs izmaiņas oficiālajā versijā, tiek izmantots pieprasījums pēc koda izvilkšanas (pull request ). Citi līdzstrādnieki pārskata kodu, iesaka uzlabojumus, un, ja viss ir kārtībā, tiek veikta apvienošana , integrējot jaunās funkcijas galvenajā atzarā. Lai to optimizētu, daudzas komandas izmanto Gitflow modeli , kas organizē darbu konkrētās atzarās: Master (ražošana), Develop (integrācija), Feature (jaunas funkcijas), Release (izlaiduma sagatavošana) un Hotfix (steidzami labojumi).
Pakotņu pārvaldība un drošība

Operētājsistēmās repozitorijs nav tikai failu kolekcija; tā ir inteliģenta sistēma. Pakotnes ietver atkarību informāciju , kas attiecas uz citām programmām, kas nepieciešamas lietojumprogrammas darbībai. Mēģinot kaut ko instalēt, pakotņu pārvaldnieks automātiski meklē šīs atkarības konfigurētajos repozitorijos, tāpēc jums nav manuāli jāinstalē katrs komponents.
No drošības viedokļa oficiālās krātuves ir visuzticamākā iespēja. Daudzi izmanto digitālos parakstus , lai garantētu, ka programmatūru nav manipulējušas trešās personas. Kad komanda uzticas pārdevēja parakstam, ļaunprogrammatūras instalēšanas iespējamība ir ievērojami samazināta, padarot pretvīrusu lietošanu mazāk svarīgu dažās vidēs. Turklāt pastāv kopienas krātuves un pakalpojumi, piemēram, openSUSE Build Service , lai gan tie jāizmanto piesardzīgāk, jo tie nav oficiāli.
Populāri rīki un ekosistēmas
Atkarībā no programmēšanas valodas ir noteiktas repozitoriji, kas ir nozares standarts. Piemēram, Python valodā ir PyPI (izmantojot pip), Node.js valodā ir NPM , Java valodā izmantojam Maven , bet PHP valodā ir PECL . R gadījumā CRAN repozitorijs ir būtisks, jo tas veic automatizētus testus (automātiskās pārbaudes) vairākās operētājsistēmās, lai nodrošinātu, ka pievienotās pakotnes neizjauc valodas stabilitāti.
Uzņēmumiem, kuriem jāpārvalda savi binārie artefakti, ir pieejami profesionāli risinājumi, piemēram, JFrog Artifactory, Sonatype Nexus vai Apache Archiva . Rīka izvēle vienmēr ir atkarīga no uzņēmuma organizatoriskās kultūras un izlaišanas cikla; komandai, kas izlaiž atjauninājumus katru stundu, izmantojot nepārtrauktu integrāciju, būs atšķirīgas vajadzības nekā komandai ar statiskiem un lēniem izlaišanas cikliem.
Neatkarīgi no tā, vai runājam par pirmkoda glabāšanu, izmantojot Git, vai lietojumprogrammu izplatīšanu, izmantojot pakotņu pārvaldniekus operētājsistēmā Linux, repozitoriji organizē programmatūras izveidi un patēriņu. Pateicoties versiju kontroles, atkarību pārvaldības un sadarbības darbplūsmu, piemēram, Gitflow, kombinācijai, tūkstošiem cilvēku var strādāt pie viena projekta bez haosa, nodrošinot, ka kods ir stabils, drošs un viegli atjaunināms jebkur pasaulē.


