Lëshimi i kontrollit të burimit Git 2.37

Është njoftuar lëshimi i sistemit të kontrollit të burimit të shpërndarë Git 2.37. Git është një nga sistemet më të njohura, më të besueshme dhe me performancë të lartë të kontrollit të versionit, duke ofruar mjete zhvillimi fleksibël jo-lineare të bazuara në degëzimin dhe bashkimin. Për të siguruar integritetin e historisë dhe rezistencën ndaj ndryshimeve retroaktive, hashimi i nënkuptuar i të gjithë historisë së mëparshme përdoret në çdo kryerje; është gjithashtu e mundur të certifikohen etiketat dhe detyrimet individuale me nënshkrime dixhitale të zhvilluesve.

Krahasuar me versionin e mëparshëm, versioni i ri përfshin 395 ndryshime, të përgatitura me pjesëmarrjen e 75 zhvilluesve, nga të cilët 20 morën pjesë në zhvillim për herë të parë. Risitë kryesore:

  • Mekanizmi i indekseve të pjesshme (indeksi i rrallë), që mbulon vetëm një pjesë të depove, është sjellë gati për përdorim të gjerë. Indekset e pjesshme mund të përmirësojnë performancën dhe të kursejnë hapësirë ​​në depo që kryejnë operacione të klonimit të pjesshëm (shkarkim të rrallë) ose që punojnë me një kopje jo të plotë të depove. Publikimi i ri kompleton integrimin e indekseve të pjesshme në komandat git show, git sparse-checkout dhe git stash. Përfitimi më i dukshëm i performancës nga përdorimi i indekseve të pjesshme shihet me komandën git stash, e cila ka parë një rritje prej 80% në shpejtësinë e ekzekutimit në disa situata.
  • Është zbatuar një mekanizëm i ri “cruft pack” për paketimin e objekteve të paarritshme që nuk janë të referuara në depo (të pa referuara nga degët ose etiketat). Objektet e paarritshme fshihen nga mbledhësi i mbeturinave, por mbeten në depo për një kohë të caktuar përpara se të fshihen për të shmangur kushtet e garës. Për të gjurmuar periudhën e shfaqjes së objekteve të paarritshme, është e nevojshme t'u bashkëngjitni etiketa me kohën e ndryshimit të objekteve të ngjashme, gjë që nuk lejon ruajtjen e tyre në një skedar paketë në të cilin të gjitha objektet kanë një kohë të përbashkët ndryshimi. Më parë, ruajtja e secilit objekt në një skedar të veçantë çonte në probleme kur kishte një numër të madh objektesh të freskëta, të paarritshme që nuk ishin ende të përshtatshme për fshirje. Mekanizmi i propozuar “cruft pack” ju lejon të ruani të gjitha objektet e paarritshme në një skedar paketë dhe të pasqyroni të dhënat për kohën e modifikimit të secilit objekt në një tabelë të veçantë të ruajtur në një skedar me shtesën “.mtimes”.
  • Për Windows dhe macOS, ekziston një mekanizëm i integruar për gjurmimin e ndryshimeve në sistemin e skedarëve, duke ju lejuar të shmangni përsëritjen në të gjithë drejtorinë e punës kur kryeni operacione të tilla si "statusi i git". Më parë, për të gjurmuar ndryshimet, shërbimet e jashtme për gjurmimin e ndryshimeve në FS, si Watchman, mund të lidheshin nëpërmjet grepave, por kjo kërkonte instalimin e programeve dhe konfigurimin shtesë. Tani funksionaliteti i specifikuar është i integruar dhe mund të aktivizohet me komandën "git config core.fsmonitor true".
  • Në komandën "git sparse-checkout", mbështetja për një alternativë ndaj modalitetit "-kon", metoda e përcaktimit të shablloneve për klonimin e pjesshëm, është deklaruar e vjetëruar, e cila lejon, kur të përcaktohet pjesa e depove që i nënshtrohet operacioni i klonimit, për të listuar skedarë individualë duke përdorur sintaksën “.gitignore”, e cila nuk lejon përdorimin për optimizimin e indekseve të pjesshme.
  • Rritje e fleksibilitetit në konfigurimin e thirrjes fsync() për të larë ndryshimet në disk. Mbështetja për strategjinë e sinkronizimit "batch" është shtuar në parametrin "core.fsyncMethod", i cili lejon përshpejtimin e punës kur shkruani një numër të madh skedarësh individualë duke grumbulluar ndryshime në cache-in e kthimit, i cili rivendoset nga një fsync i vetëm () telefononi. Testi, i cili rezultoi në shtimin e 500 skedarëve duke përdorur komandën "git add", u përfundua në 0.15 sekonda kur u aktivizua modaliteti i ri, ndërsa thirrja e fsync() mori 1.88 sekonda për çdo skedar dhe pa përdorur fsync - 0.06 sekonda.
  • Komandat e kalimit të degëve si "git log" dhe "git rev-list" tani kanë një opsion "-since-as-filter=X" që ju lejon të filtroni informacione rreth kryerjeve që janë më të vjetra se "X". Ndryshe nga opsioni "—sic", komanda e re zbatohet si një filtër që nuk ndalon kërkimin pas kryerjes së parë më të vjetër se koha e specifikuar.
  • Në komandën "git remote", kur specifikoni flamurin "-v", shfaqet informacioni rreth kloneve të pjesshme të depove.
  • U shtua cilësimi "transfer.credentialsInUrl", i cili mund të marrë vlerat "paralajmëroj", "vdes" dhe "lejoj". Nëse specifikohet në parametrin “remote. Kredencialet e tekstit të thjeshtë .url, përpjekja për të kryer një operacion "fetch" ose "push" do të dështojë me një gabim nëse cilësimi "transfer.credentialsInUrl" është caktuar në "die" ose një paralajmërim nëse është caktuar në "warn".
  • Si parazgjedhje, është aktivizuar zbatimi i ri i modalitetit interaktiv të komandës "git add -i", i rishkruar nga Perl në C.

Burimi: opennet.ru

Shto një koment