E prezantuar dalja e sistemit të shpërndarë të menaxhimit të teksteve burimore Git 2.38. Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë për menaxhimin e versioneve, duke ofruar mjete fleksibël për zhvillim jo-linear, të bazuara në dezim dhe bashkim të degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve 'pas faktit', përdoret hashing i implicit i tërë historisë së mëparshme në çdo commit, gjithashtu është e mundur verifikimi me nënshkrime digjitale të zhvilluesve për etiketat dhe commit-et individuale.
Në krahasim me daljen e kaluar, në versionin e ri janë pranuar 699 ndryshime, të përgatitura me pjesëmarrjen e 92 zhvilluesve, nga të cilët 24 e kanë marrë pjesën për herë të parë. Inovacionet kryesore:
- Në përbërjen kryesore është përfshirë utilitari 'scalar', i zhvilluar nga Microsoft për menaxhimin e depozitave të mëdha. Utilitari fillimisht ishte shkruar në gjuhën C#, por versi i rishikuar në gjuhën C është përfshirë në git. Utilitari i ri ndryshon nga komanda git duke përfshirë automatikisht mundësi dhe konfigurime të tjera që ndikojnë në performancën gjatë punës me depozita shumë të mëdha. Për shembull, kur përdoret scalar, aplikohet:
- Klonimi i pjesshëm për punë me një kopje të paplotë të depozitës.
- Mekanizmi i integruar për ndjekjen e ndryshimeve në sistemin e skedarëve (FSMonitor), i cili lejon qasje pa kaluar nëpër tërë katalogun e punës.
- Indekset që mbulojnë objekte në skedarë të ndryshëm paketash (multi-pack).
- Skedarët commit-graph me indeksin e grafit të commit-eve, të cilat përdoren për optimizimin e qasjes në informacionin e commit-eve.
- Punët periodike në sfond për të ruajtur strukturën optimale të depozitës në sfond, pa bllokuar seancën interaktive (në çdo orë kryhet një punë për parazgjedhjen e objekteve të reja nga depozita e largët dhe azhurnimin e skedarit me grafit të commit-eve, ndërsa çdo natë niset procesi i paketimit të depozitës).
- Rezaimi 'sparseCheckoutCone', që kufizon modelet e lejuara gjatë klonimit të pjesshëm.
- Për komandën 'git rebase' është shtuar opsioni '--update-refs' për azhurnimin e degëve të varura, duke u siguruar që të mos keni nevojë të kryeni operacione checkout për çdo degë të varur për të kaluar në commit-in e kërkuar.
- Siguruar përputhshmërinë e komandës 'git rm' me indekset pjesore.
- Përmirësuar sjellja e komandës 'git mv A B' kur lëviz një skedar nga zona e punës me indekse pjesore në zonën e jashtme, për të cilën ky mod është i paplikueshëm.
- Optimizuar formati i skedarëve bitmap për punë me depozita të mëdha - është shtuar një tabelë indekse opsionale me listën e commit-eve të zgjedhura dhe offsetet e tyre.
- Në komandën 'git merge-tree' është implementuar një mod i ri ku, mbi bazën e dy commit-eve të caktuara, llogaritet një pemë me rezultatin e bashkimit, ashtu si nëse historitë e këtyre commit-eve do të ishin bashkuar.
- Shtuar një parametër 'safe.barerepository' për të menaxhuar mundësinë e vendosjes së bare-repozitorëve (repozitore që nuk përmbajnë një katalog pune) brenda repo-zitorëve të tjerë git. Kur vendoset në 'explicit' lejohet puna me bare-repozita të vendosura vetëm në katalogun e sipërm. Për mundësinë e vendosjes së bare-repozitorëve në nënkatalogë duhet të përdoret vlera 'all'.
- Në komandën 'git grep' është shtuar opsioni '-m' ('--max-count'), i ngjashëm me opsionin e njëjtë në GNU grep dhe që lejon kufizimin e numrit të ndodhidmave të shfaqura.
- Në komandën 'ls-files' është implementuar opsioni '--format' për konfigurimin e fushave të shfaqura (për shembull, mund të përfshihet shfaqja e emrit të objektit, modet etj.).
- Në 'git cat-file' gjatë shfaqjes së përmbajtjes së objekteve është realizuar mundësia e marrjes parasysh të lidhjeve të autorëve me email, të dhëna në skedarin mailmap.
Burimi: opennet.ru
