Pieejama Git 2.41 avota vadības sistēma

Pēc trÄ«s mēneÅ”u izstrādes ir publicēta izplatÄ«tā avotu kontroles sistēmas Git 2.41 izlaidums. Git ir viena no populārākajām, uzticamākajām un augstas veiktspējas versiju kontroles sistēmām, kas nodroÅ”ina elastÄ«gus nelineārus izstrādes rÄ«kus, kuru pamatā ir zaru sazaroÅ”ana un apvienoÅ”ana. Lai nodroÅ”inātu vēstures integritāti un izturÄ«bu pret retroaktÄ«vām izmaiņām, tiek izmantota netieÅ”a visas iepriekŔējās vēstures jaukÅ”ana katrā saistÄ«bā, kā arÄ« ir iespējams pārbaudÄ«t atseviŔķus tagus un saistÄ«bas ar izstrādātāju digitālajiem parakstiem.

SalÄ«dzinot ar iepriekŔējo laidienu, jaunajā versijā, kas sagatavota ar 542 izstrādātāju piedalÄ«Å”anos, tika pieņemtas 95 izmaiņas, no kurām 29 izstrādē piedalÄ«jās pirmo reizi. Galvenie jauninājumi:

  • Uzlabota apstrāde ar nesasniedzamiem objektiem, uz kuriem nav atsauces repozitorijā (atsauces uz atzariem vai tagiem nav). Neaizsniedzamus priekÅ”metus atkritumu savācējs izņem, bet pirms izņemÅ”anas noteiktu laiku paliek krātuvē, lai izvairÄ«tos no sacensÄ«bu apstākļiem. Lai sekotu lÄ«dzi nesasniedzamo objektu periodam, tiem ir jāpiesaista etiÄ·etes ar lÄ«dzÄ«gu objektu maiņas laiku, kas neļauj tos uzglabāt vienā pakotnē, kurā visiem objektiem ir kopÄ«gs maiņas laiks. IepriekÅ” katrs nesasniedzamais objekts tika glabāts atseviŔķā failā, kas radÄ«ja problēmas, ja bija liels skaits jaunu nesasniedzamu objektu, kas vēl nebija pakļauti dzÄ“Å”anai. Jaunajā laidienā pēc noklusējuma nesasniedzamu objektu iepakoÅ”anai tiek izmantots ā€œcruft packsā€ mehānisms, kas ļauj glabāt visus nesasniedzamos objektus vienā pakotnes failā un atspoguļot datus par katra objekta modifikācijas laiku atseviŔķā tabulā, kas glabājas failu ar paplaÅ”inājumu ā€œ.mtimesā€ un izveidot saiti, izmantojot indeksa failu ar paplaÅ”inājumu ā€œ.idxā€.
    Pieejama Git 2.41 avota vadības sistēma
  • Pēc noklusējuma pakotnes failiem diskā ir iespējota apgrieztā indeksa (revindex) uzturÄ“Å”ana. Pārbaudot torvalds/linux krātuvēs, apgrieztā indeksa izmantoÅ”ana ļāva mums 1.49 reizes paātrināt resursietilpÄ«gās "git push" darbÄ«bas un vienkārÅ”as darbÄ«bas, piemēram, viena objekta lieluma aprēķināŔanu, izmantojot "git cat- fails --batch='%(objectsize:disk)' Ā» 77 reizes. Faili (.rev) ar apgriezto indeksu tiks glabāti repozitorijā direktorijā ".git/objects/pack".

    Atgādiniet, ka Git visus datus glabā objektu veidā, kas tiek ievietoti atseviŔķos failos. Lai palielinātu darba ar repozitoriju efektivitāti, objekti papildus tiek ievietoti pakotnes failos, kuros informācija tiek parādÄ«ta objektu straumes veidā, kas seko viens pēc otra (lÄ«dzÄ«gs formāts tiek izmantots, pārsÅ«tot objektus ar git fetch un git push komandas). Katram pakotnes failam tiek izveidots indeksa fails (.idx), kas ļauj ļoti ātri noteikt nobÄ«di pakotnes failā, pēc kuras objekta identifikators glabā doto objektu.

    Jaunajā laidienā iekļautā apgrieztā indeksa mērÄ·is ir racionalizēt objekta ID noteikÅ”anas procesu, izmantojot informāciju par objekta atraÅ”anās vietu pakotnes failā. IepriekÅ” Ŕāda konvertÄ“Å”ana tika veikta lidojuma laikā pakotnes faila parsÄ“Å”anas laikā un tika saglabāta tikai atmiņā, kas neļāva atkārtoti izmantot Ŕādus indeksus un lika indeksu Ä£enerēt katru reizi. Indeksa izveides darbÄ«ba tiek samazināta lÄ«dz objektu un pozÄ«ciju pāru masÄ«va izveidoÅ”anai un kārtoÅ”anai pēc pozÄ«cijas, kas var aizņemt ilgu laiku lieliem pakotņu failiem.

    Piemēram, objektu satura attēloÅ”anas darbÄ«ba, kurā tiek izmantots tieÅ”ais indekss, bija 62 reizes ātrāka nekā objektu lieluma parādÄ«Å”anas darbÄ«ba, kuriem netika indeksēti pozÄ«cijas-objektu attiecÄ«bu dati. Pēc apgrieztā indeksa izmantoÅ”anas Ŕīs darbÄ«bas sāka aizņemt aptuveni tikpat ilgu laiku. Reversie indeksi arÄ« ļauj paātrināt objektu nosÅ«tÄ«Å”anas darbÄ«bu, izpildot fetch un push komandas, tieÅ”i pārsÅ«tot gatavus datus no diska.

    Pieejama Git 2.41 avota vadības sistēma

  • Pievienots atbalsts WWW-Authenticate galveņu nodoÅ”anai starp akreditācijas datu apstrādātāju un autentifikācijas pakalpojumu protokolam "akreditācijas datu palÄ«gs", ko izmanto akreditācijas datu nodoÅ”anai, piekļūstot ierobežotām krātuvēm. WWW-Authenticate galvenes atbalsts ļauj nodot OAuth tvēruma parametrus, lai sÄ«kāk nodalÄ«tu lietotāju piekļuvi krātuvēm un norobežotu pieprasÄ«jumiem pieejamos tvērumus.
  • Pievienota formāta opcija "%(ahead-behind: )", kas ļauj nekavējoties iegÅ«t informāciju par noteiktā atzarā esoÅ”o vai neesoÅ”o saistÄ«bu skaitu attiecÄ«bā pret citu filiāli (cik ļoti viena filiāle atpaliek vai apsteidz citu saistÄ«bu lÄ«menÄ«). IepriekÅ” Ŕīs informācijas iegÅ«Å”anai bija nepiecieÅ”amas divas atseviŔķas komandas: "git rev-list --count main..my-feature", lai iegÅ«tu filiālei unikālo saistÄ«bu skaitu, un "git rev-list --count my-feature.. galvenaisā€, lai iegÅ«tu trÅ«kstoÅ”o apņemÅ”anos skaitu. Tagad Ŕādus aprēķinus var samazināt lÄ«dz vienai instrukcijai, kas vienkārÅ”o rakstÄ«Å”anas apstrādātājus un samazina izpildes laiku. Piemēram, lai parādÄ«tu nesapludinātos zarus un novērtētu, vai tie atrodas aiz vai priekŔā galvenajam atzaram, varat izmantot vienu lÄ«niju: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(ahead-behind :origin/HEAD)' \ refs/heads/tb/ | kolonna -t tb/cruft-extra-tips 2 96 tb/for-each-ref ā€” izslēdziet 16 96 tb/roaring-bitmaps 47 3 iepriekÅ” izmantotā skripta vietā, kas ir 17 reizes lēnāks: $ 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" "$ahead" darÄ«ts | kolonna -t tb/cruft-extra-tips 2 96 tb/katram-ref-izslēgt 16 96 tb/rÅ«coÅ”as bitkartes 47 3
  • Komandai "git fetch" ir pievienota opcija "--porcelain", kas Ä£enerē izvadi formātā " ā€, mazāk lasāms, bet ērtāk parsÄ“Å”anai skriptos.
  • Pievienots "fetch.hideRefs" iestatÄ«jums, lai paātrinātu "git fetch" darbÄ«bas, paslēpjot daļu saiÅ”u lokālajā repozitorijā pārbaudes stadijā, kad serveris ir nosÅ«tÄ«jis visu objektu komplektu, kas ietaupa laiku, ierobežojot pārbaudi tikai serveros. no kuriem dati tiek tieÅ”i izgÅ«ti. Piemēram, testējot sistēmā ar krātuvēm, kurās ir liels skaits izsekotu ārējo saiÅ”u, izslēdzot visas saites, izņemot tās, kas adresētas $remote mērÄ·a serverim, ā€œgit fetchā€ darbÄ«ba tika samazināta no 20 minÅ«tēm lÄ«dz 30 sekundēm. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $remote
  • Komanda "git fsck" ievieÅ” iespēju pārbaudÄ«t, vai pieejamÄ«bas bitkartēs un reversajos indeksos nav bojājumu, kontrolsummu atbilstÄ«bas un vērtÄ«bu pareizÄ«bas.
  • Komanda "git clone --local" tagad parāda kļūdu, mēģinot kopēt no repozitorija, kurā ir simboliskas saites iekŔā $GIT_DIR.

Avots: opennet.ru

Pievieno komentāru