Izdanje kontrole izvora Git 2.37

Najavljeno je izdanje distribuiranog sustava za kontrolu izvora Git 2.37. Git je jedan od najpopularnijih, pouzdanih i visokoučinkovitih sustava za kontrolu verzija, koji pruža fleksibilne nelinearne razvojne alate temeljene na grananju i spajanju. Kako bi se osigurala cjelovitost povijesti i otpornost na retroaktivne promjene, implicitno raspršivanje cijele prethodne povijesti koristi se u svakom commitu; također je moguće certificirati pojedinačne oznake i commitove digitalnim potpisima programera.

U odnosu na prethodno izdanje, u novoj verziji usvojeno je 395 izmjena, u pripremi je sudjelovalo 75 programera, od kojih je 20 po prvi put sudjelovalo u razvoju. Glavne inovacije:

  • Mehanizam parcijalnih indeksa (sparse index), koji pokriva samo dio repozitorija, spreman je za široku upotrebu. Djelomični indeksi mogu poboljšati performanse i uštedjeti prostor u spremištima koja izvode operacije djelomičnog kloniranja (sparse-checkout) ili rade s nepotpunom kopijom spremišta. Novo izdanje dovršava integraciju djelomičnih indeksa u naredbe git show, git sparse-checkout i git stash. Najuočljivija prednost izvedbe od korištenja djelomičnih indeksa vidljiva je s naredbom git stash, koja je u nekim situacijama doživjela 80% povećanje brzine izvršenja.
  • Implementiran je novi mehanizam "cruft packs" za pakiranje nedostupnih objekata koji nisu navedeni u repozitoriju (nisu navedeni u granama ili oznakama). Nedostupne objekte briše sakupljač smeća, ali ostaju u spremištu određeno vrijeme prije nego što se izbrišu kako bi se izbjegli uvjeti utrke. Za praćenje razdoblja pojavljivanja nedostupnih objekata, potrebno im je priložiti oznake s vremenom promjene sličnih objekata, što ne dopušta njihovo pohranjivanje u jednu paket datoteku u kojoj svi objekti imaju zajedničko vrijeme promjene. Prethodno je spremanje svakog objekta u zasebnu datoteku dovodilo do problema kada je postojao velik broj svježih, nedostupnih objekata koji još nisu ispunjavali uvjete za brisanje. Predloženi mehanizam "cruft paketa" omogućuje pohranjivanje svih nedostupnih objekata u jednu datoteku paketa i odražavanje podataka o vremenu izmjene svakog objekta u zasebnoj tablici pohranjenoj u datoteci s ekstenzijom ".mtimes".
  • Za Windows i macOS postoji ugrađeni mehanizam za praćenje promjena u datotečnom sustavu, što vam omogućuje da izbjegnete ponavljanje cijelog radnog direktorija prilikom izvođenja operacija kao što je "git status". Prethodno su se za praćenje promjena vanjski uslužni programi za praćenje promjena u FS-u, poput Watchmana, mogli povezati putem kuka, ali to je zahtijevalo instalaciju dodatnih programa i konfiguraciju. Sada je navedena funkcionalnost ugrađena i može se omogućiti naredbom “git config core.fsmonitor true”.
  • U naredbi “git sparse-checkout” proglašena je zastarjela podrška za alternativu modu “—cone”, metoda definiranja predložaka za djelomično kloniranje, što omogućuje da se prilikom određivanja dijela repozitorija koji podliježe operacija kloniranja, za popis pojedinačnih datoteka korištenjem sintakse “.gitignore”, koja ne dopušta upotrebu parcijalnih indeksa za optimizaciju.
  • Povećana fleksibilnost u konfiguriranju poziva fsync() za ispiranje promjena na disk. Parametru "core.fsyncMethod" dodana je podrška za "batch" strategiju sinkronizacije, koja omogućuje ubrzavanje rada pri pisanju velikog broja pojedinačnih datoteka akumuliranjem promjena u predmemoriju povratnog pisanja, koja se poništava jednim fsync() poziv. Test, koji je rezultirao dodavanjem 500 datoteka pomoću naredbe “git add”, dovršen je za 0.15 sekundi kada je novi način rada bio omogućen, dok je pozivanje fsync() trajalo 1.88 sekundi za svaku datoteku, a bez upotrebe fsync - 0.06 sekundi.
  • Naredbe za obilazak grana kao što su “git log” i “git rev-list” sada imaju opciju “-since-as-filter=X” koja vam omogućuje filtriranje informacija o predajama koje su starije od “X”. Za razliku od opcije “—since”, nova naredba implementirana je kao filtar koji ne zaustavlja pretragu nakon prvog urezivanja starijeg od navedenog vremena.
  • U naredbi “git remote”, kada se navede oznaka “-v”, prikazuju se informacije o djelomičnim klonovima repozitorija.
  • Dodana postavka "transfer.credentialsInUrl", koja može uzeti vrijednosti "warn", "die" i "allow". Ako navedete vjerodajnice jasnog teksta u parametru “remote..url”, pokušaj izvođenja operacija “fetch” ili “push” završit će s pogreškom ako je postavka “transfer.credentialsInUrl” postavljena na “die” , ili upozorenje ako je postavljena vrijednost "upozorenje".
  • Prema zadanim postavkama omogućena je nova implementacija interaktivnog načina naredbe "git add -i", prepisane iz Perla u C.

Izvor: opennet.ru

Dodajte komentar