Git 2.50: Poboljšanja performansi za velike repozitorije i više

git-2.50

Prije nekoliko dana objavljeno je Izlazak nove verzije projekta Git 2.50, uvođenje više od 600 promjena vođen aktivnom zajednicom koja je ovaj put uključivala 98 programera, uključujući 35 novih suradnika.

Ova nova verzija Gita 2.50 ističe se integracijom novih naredbi (git-diff-pairs), novim funkcijama za čišćenje, filtriranje i održavanje, zamjenom rekurzivnog mehanizma za spajanje s ORT-om, kao i poboljšanjima performansi i ispravcima grešaka.

Ključne nove značajke Git 2.50

U ovoj novoj verziji Gita 2.50, jedna od najvažnijih novih značajki je optimizacija u tretmanu tzv. "cruft packa", To jest, paketi objekata koji nisu dostupni ili na koje se ne referenciraju grane ili oznake. Tradicionalno, Git je pohranjivao te objekte u jednu, veliku datoteku paketa, što je moglo uzrokovati probleme s performansama prilikom ponovnog pakiranja repozitorija s mnogim od tih stavki.

S novom verzijom, Git vam omogućuje podjelu ovih cruft paketa u nekoliko manjih datoteka, što smanjuje korištenje diska i poboljšava performanse ulazno/izlaznih operacija za skupne operacije. Osim toga, si unesite opciju –combine-cruft-below-size, što omogućuje fleksibilnije kombinirajte male pakete u jedan nego prethodna opcija –max-cruft-size, bez nametanja ograničenja na kombiniranu veličinu datoteke. Ova nova značajka posebno je korisna u projektima s osirotelim objektima raspoređenim u više paketa.

Još jedno poboljšanje usmjereno na velika spremišta je eksperimentalna podrška za postupno ažuriranje MIDX indeksi , koji Pohranjuju informacije o objektima u odvojenim slojevima korištenjem bitmap datoteka, što omogućuje brža ažuriranja kako se dodaju nove izmjene. Ovaj napredak je ključan za velike repozitorije kojima su potrebne brze operacije indeksiranja bez potrebe za potpunom ponovnom izgradnjom metapodataka.

Potpuna zamjena rekurzivnog mehanizma za spajanje s ORT-om

Git 2.50 uvodi veliku promjenu s trajno uklanjanje rekurzivnog fuzijskog motora tradicionalno. Umjesto toga, upotreba ORT-a je konsolidirana, Jedan moderniji, održiviji i učinkovitiji fuzijski motor. ORT ne samo da nudi precizniju analizu sukoba, već vam omogućuje i provjeru je li spajanje moguće bez generiranja dodatnih objekata. Nadalje, naredba merge-tree sada uključuje opciju –quiet za korištenje kao tihi provjerivač spajanja bez mijenjanja repozitorija.

gitt-diff-pairs: rješenje za probleme skalabilnosti

Pregled koda je nesumnjivo jedan od stupova modernog kolaborativnog razvoja, a razlike ili diffovi između revizija igraju važnu ulogu u tom procesu. Dolaskom Gita 2.50, uvedeno je rješenje dizajnirano za skalabilnost: nova naredba git-diff-pairs.

Tradicionalno, za usporedbu dviju revizija koristite naredbu poput:

git diff HEAD~1 HEAD

Ovo generira potpunu zakrpu koja sadrži sve promjene između navedenih revizija. Iako je učinkovita u mnogim slučajevima, može predstavljati problem s performansama pri radu s velikim skupovima modificiranih datoteka.

Zato je git-diff-pairs posebno dizajniran za primanje sirovih ulaznih podataka izravno iz izlaza git diff-tree-a i učinkovito i točno generiranje odgovarajućih zakrpa.

Upotreba je jednostavna kao:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Ova naredba uzima zadane parove blobova i generira točan diff izlaz, čuvajući kontekstualne informacije i omogućujući podjelu rada u manje serije. To otvara vrata paralelnoj obradi, poboljšava učinkovitost resursa i olakšava skalabilnost u alatima temeljenim na diffovima poput GitLaba.

Nove značajke za čišćenje, filtriranje i održavanje

Git 2.50 uključuje nekoliko dodatnih alata osmišljenih za poboljšanje održavanja repozitorija:

  • Naredba je dodana ispuštanje git refloga, što vam omogućuje potpuno brisanje refloga za određenu granu, idealno za čišćenje povijesti rada kada više ne trebate održavati prethodne reference.
  • Izbor -filter cat-file –batch je sada dostupan u gitu, što vam omogućuje filtriranje rezultata prema vrsti objekta.

Osim toga, istaknuto je i nekoliko internih optimizacija:

  • Poboljšana upotreba simboličkih veza, s keširanjem prefiksa i smanjenjem redundantnih provjera.
  • Uklanjanje Perl ovisnosti u dokumentaciji i testnim skriptama, zamjenjujući ih shell funkcijama ili C implementacijama, što ih čini lakšim za kompajliranje na sustavima s minimalističkim konfiguracijama.
  • Uključujući kontroler razlika_korisnika za analizu razlika u .ini datotekama.
  • Poboljšana kompatibilnost naredbe git send-email sa SMTP poslužiteljima kao što je Outlook.

Konačno, ako ste zainteresirani za više informacija o tome, možete pogledati detalje u sljedeći link.