Sistemi i menaxhimit të kodit burimor Git 2.41 është në dispozicion.

Pas tre muajsh zhvillimi, është publikuar versioni i sistemit të menaxhimit të teksteve burimore të shpërndarë Git 2.41. Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë për menaxhimin e versioneve, duke ofruar mjete fleksibile për zhvillimin jo-linjar, të bazuara në degëzim dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve 'me anë të pas', përdoret një hash implicit i tërë historisë së mëparshme në çdo commit, siç është e mundur gjithashtu verifikimi me nënshkrime digitale të etiketave dhe commit-eve të veçanta.

Në krahasim me versionin e kaluar, në këtë version janë pranuar 542 ndryshime, të përgatitura me pjesëmarrjen e 95 zhvilluesve, nga të cilët 29 kanë marrë pjesë për herë të parë në zhvillim. Novacionet kryesore:

  • Përmirësohet përpunimi i objekteve të paarritshme (unreachable), për të cilat në depo nuk ka reference (nuk janë referuar nga degë ose etiketa). Objektet e paarritshme hiqen nga mbledhësi i mbeturinave, por para se të hiqen, ato mbeten për një kohë të caktuar në depo për të shmangur gjendjet e garës. Për të ndjekur periudhën e qëndrimit të objekteve të paarritshme, është e nevojshme të lidhen etiketa me kohën e ndryshimit të këtyre objekteve, gjë që nuk lejon ruajtjen e tyre në një pack-file, në të cilin të gjitha objektet kanë një kohë të përbashkët ndryshimi. Më parë, çdo objekt i paarritshëm ruhej në një skedë të veçantë, gjë që shkaktonte probleme kur kishte numra të mëdhenj të objekteve të reja të paarritshme, të cilat ende nuk i përkisnin fshirjes. Në versionin e ri, për paketimin e objekteve të paarritshme, automatikisht përdoret mekanizmi 'cruft packs', i cili lejon ruajtjen e të gjithë objekteve të paarritshme në një pack-file, ndërsa të dhënat mbi kohën e modifikimit të çdo objekti reflektohen në një tabelë të veçantë, e ruajtur në një skedë me zgjerimin '.mtimes' dhe e lidhur me një skedë indeksuese me zgjerimin '.idx'.
    Sistemi i menaxhimit të kodit burimor Git 2.41 është në dispozicion.
  • E kujtojmë se Git ruan të gjitha të dhënat në formën e objekteve, të cilat vendosen në skeda të veçanta. Për të rritur efikasitetin e punës me depo, objektet përfshihen gjithashtu në pack-file, në të cilat informacioni paraqitet në formën e një rrjedhe të objekteve që ndjekin njëra-tjetrën (forma e ngjashme përdoret kur dërgohen objekte me komandat git fetch dhe git push). Për çdo pack-file krijohet një skedë indeksi (.idx), e cila lejon që shumë shpejt të përcaktohet offset-i në pack-file, me të cilin ruhet ky objekt.

    Indeksi i përfshirë në versionin e ri është i orientuar drejt optimizimit të procesit të përcaktimit të identifikuesit të objektit sipas informacionit për vendosjen e objektit në pack-file. Më parë, ky transformim kryhej në fluks gjatë analizës së pack-file dhe ruhej vetëm në memorie, gjë që nuk lejonte ribashkimin e indekseve të tillë dhe e detyronte gjenerimin e indeksit çdo herë. Operacioni i ndërtimit të indeksit reduktohet në ndërtimin e një array-i të çiftit 'objekt-pozitë' dhe renditjes së tij sipas pozitës, gjë që mund të marrë shumë kohë për pack-file të mëdha.

    Включённый в новом выпуске обратный индекс нацелен на оптимизацию процесса определения идентификатора объекта по информации о размещении объекта в pack-файле. Ранее такое преобразование выполнялось на лету во время разбора pack-файла и хранилось только в памяти, что не позволяло повторно использовать подобные индексы и вынуждало генерировать индекс каждый раз. Операция построения индекса сводится к построению массива из пар «объект-позиция» и его сортировке по позиции, что может занимать много времени для больших pack-файлов.

    Për shembull, operacioni i nxjerrjes së përmbajtjes së objekteve, në të cilin përdoret indeksi i drejtpërdrejtë, kryhej 62 herë më shpejt se operacioni i shfaqjes së madhësisë së objekteve, për të cilin të dhënat mbi lidhjen e pozitës me objektin nuk ishin indeksuar. Pas përdorimit të indeksit mbrapsht, operacionet e përmendura filluan të përdorin një kohë të ngjashme. Indeksat mbrapsht gjithashtu lejojnë të shpejtojnë operacionet e dërgimit të objekteve gjatë ekzekutimit të komandave fetch dhe push përmes transmetimit të drejtpërdrejtë të të dhënave të gatshme nga disku.

    Sistemi i menaxhimit të kodit burimor Git 2.41 është në dispozicion.
  • Në protokollin 'credential helper', i përdorur për të transmetuar të dhënat e verifikimit gjatë qasjes në depo të kufizuara, është shtuar mbështetje për transmetimin e titujve WWW-Authenticate midis menaxherit të kredencialeve dhe shërbimit në të cilin kryhet autentifikimi. Mbështetje për titullin WWW-Authenticate lejon transmetimin e parametrave scope të OAuth për një ndarje më të hollësishme të qasjes së përdoruesve në depo dhe ndarjen e fushave të aksesueshme për kërkesa.
  • Në komandën for-each-ref është shtuar opsioni i formatimit «%(ahead-behind:)», i cili lejon që njëherë të merret informacion për numrin e komiteteve që janë të pranishme ose jo në një degë të caktuar në krahasim me një degë tjetër (sa shumë një degë vonohet ose e kalon tjetrën në nivelin e komiteteve). Më parë, për të marrë këtë informacion ishte e nevojshme të ekzekutoheshin dy komanda të veçanta: «git rev-list —count main..my-feature» për të marrë numrin e komiteteve unike për degën dhe «git rev-list —count my-feature..main» për të marrë numrin e komiteteve të munguar. Tani, këto llogaritje mund të reduktohen në një komandë, që thjeshton shkruajtjen e trajtuesve dhe zvogëlon kohën e ekzekutimit. Për shembull, për të treguar degët që nuk kanë kaluar bashkimin dhe për të vlerësuar vonesën ose përparimin e tyre ndaj degës kryesore, mund të përdoret një rresht: $ git for-each-ref —no-merged=origin/HEAD \ —format=’%(refname:short) %(ahead-behind:origin/HEAD)’ \ refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-ref—exclude 16 96 tb/roaring-bitmaps 47 3 në vend të skriptit që është përdorur më parë, i cili ekzekutohet 17 herë më ngadalë: $ git for-each-ref —format=’%(refname:short)’ —no-merged=origin/HEAD \ refs/heads/tb | while read ref do ahead=»$(git rev-list —count origin/HEAD..$ref)» behind=»$(git rev-list —count $ref..origin/HEAD)» printf «%s %d %d\n» «$ref» «$ahead» «$behind» done | column -t tb/cruft-extra-tips 2 96 tb/for-each-ref—exclude 16 96 tb/roaring-bitmaps 47 3
  • Në komandën «git fetch» është shtuar opsioni «—porcelain», i cili, kur është i saktë, formon një dalje në formatin « », më pak i lexueshëm, por më i përshtatshëm për analizimin në skripte.
  • Është shtuar konfigurimi «fetch.hideRefs», i cili lejon të shpejtohen operacionet «git fetch» duke fshehur një pjesë të referencave në repozitorin lokal në fazën e verifikimit të dërgimit nga serveri të gjithë grupeve të objekteve, duke kursyer kohë duke kufizuar kontrollin vetëm te serveranga të cilat merrni të dhëna. Për shembull, gjatë një testi në një sistem me repozita që përmbajnë një numër të madh referencash të jashtme, përjashtimi i të gjitha referencave, përveç atyre që janë drejtuar te target server $remote, ka lejuar që ekzekutimi i operacionit «git fetch» të reduktohet nga 20 minuta në 30 sekonda. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $remote
  • Në komandën «git fsck» është implementuar mundësia e kontrollit të dëmve, përputhshmërisë së kontrolleve dhe korrektësisë së vlerave në hartat e disponueshmërisë dhe indekset e kundërt.
  • Në komandën «git clone —local» është implementuar dalja e gabimit kur përpiqeni të kopjoni nga një repozitë që përmban lidhje simbolike brenda $GIT_DIR.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster