Izdanje kontrole izvora Git 2.56

Git 2.56, distribuirani sistem za upravljanje izvornim kodom, je objavljen. Git je licenciran pod GPLv2+ licencom. U poređenju s prethodnim izdanjem, nova verzija uključuje 748 promjena koje je pripremilo 104 programera, od kojih je 39 novo u Gitovom razvoju. Ključne nove funkcije (1, 2, 3):

  • Dodan je mod "git add --resolved" za rješavanje konflikata prilikom spajanja grana. Ovaj mod provjerava datoteke za markere konflikata i, ako se marker otkrije u barem jednoj datoteci, vraća grešku, ne indeksira nijednu datoteku i prikazuje listu datoteka koje zahtijevaju ispravku. Za razliku od naredbe "git add --update", ovaj novi mod obrađuje samo datoteke u stanju konflikta i ignoriše promijenjene datoteke koje nisu povezane sa konfliktom. Ovo omogućava sigurno dovršavanje spajanja grana čak i ako postoje druge nedovršene izmjene u radnom direktoriju (naredba "git add --update" dodala je sve prethodno praćene promijenjene datoteke u radnom direktoriju u indeks).
  • Rad s velikim repozitorijima je značajno ubrzan optimizacijom algoritma za pretraživanje najnovijih zajedničkih commit-ova prilikom spajanja grana i poređenja commit-ova. Proces sada uzima u obzir commit-ove koji pripadaju isključivo jednoj grani, što omogućava da se skeniranje odmah zaustavi nakon pronalaska svih mogućih zajedničkih predaka, bez gubljenja vremena na daljnje pregledavanje historije promjena. U jednom testiranom repozitoriju, brzina pretraživanja se povećala u prosjeku 20 puta, dok je u drugom ubrzanje dostiglo 70 puta. Prilikom pokretanja naredbe "git merge-base --all v4.8 v4.9" u repozitoriju s kernelom... Linux Broj koraka prelaska smanjen je sa 167 hiljada na 3.8 hiljada.
  • Režim ponovnog pakovanja "--path-walk" je prilagođen za upotrebu na serveru, omogućavajući kreiranje kompaktnijih paket datoteka grupisanjem objekata prema njihovoj putanji u stablu direktorijuma (na primjer, za Fluent UI repozitorij, korištenje "--path-walk" smanjilo je veličinu paket datoteke sa 558 MB na 164 MB). Nova verzija podržava upotrebu režima "--path-walk" u kombinaciji sa bitmapama dostupnosti i delta ostrvima, koje Git hosting servisi koriste za ubrzavanje rada i izolaciju forkova od glavnog repozitorija.
  • Uska grla koja su uzrokovala redundantne proračune u velikim repozitorijima su eliminirana: nepotrebne provjere stanja datoteka prilikom pisanja u reftable su uklonjene; ​​ponovno skeniranje liste je eliminirano za svaki novi umetak packfile-a; ubrzane su reftable operacije s akumuliranim velikim zapisima brisanja; optimizirane su performanse git diff naredbe prilikom određivanja ograničenja putanje datoteke. Nakon ovih optimizacija, reftable operacije s velikim brojem brisanja su ubrzane za 65 puta (sa 13 sekundi na 0.2 sekunde), a problematična git diff naredba u Chromium repozitoriju s 500000 stavki u indeksu sada traje 0.07 sekundi umjesto 8 minuta.
  • Eksperimentalna naredba "git history", koja pruža mogućnost prepisivanja historije promjena, ažurirana je kako bi uključila operaciju "git history drop" za uklanjanje odabranog commita i automatsko dodavanje njegovih potomaka roditeljskom commitu.
  • Dodana je naredba "git branch --delete-merged 'origin/*' 'topic-*'" za sigurno brisanje grupa lokalnih grana čije su promjene već pohranjene u vanjski repozitorij. Džoker znakovi se mogu koristiti za filtriranje grana i repozitorija. Zastavica "--dry-run" se može koristiti za analizu kandidata za brisanje bez stvarnog izvođenja operacije.
  • Dodata je naredba "git refs create|update|delete|rename", koja kombinuje operacije niskog nivoa za kreiranje, brisanje, preimenovanje i ažuriranje referenci.
  • Komanda "git bisect run" sada ima opciju "--reset-when-found=[ ]", što automatski vraća repozitorij u stanje prije početka pretrage, ili ostavlja problematični commit aktivnim, bez potrebe za zasebnim pokretanjem naredbe "git bisect reset".
  • Komanda 'git replay' sada ima zastavicu '--linearize' za korištenje ravne topologije spajanja, slično kao 'git rebase --no-rebase-merges', ali bez pristupa radnom stablu.
  • Komanda "git log --follow" sada prati preimenovanja datoteka u nelinearnim historijama commitova, kao što je spajanje podgrana. Putanja datoteke se sada zasebno bilježi za svaki roditeljski commit, što rezultat čini nezavisnim od redoslijeda kojim se prolazi kroz historiju commita.
  • Dodana je mogućnost korištenja naredbe "git repack -a --filter=blob:limit=1m --drop-filtered" za uklanjanje velikih blobova preuzetih na zahtjev iz vanjskog repozitorija koji se ne koriste u trenutnom indeksu. Ovi objekti će se automatski ponovo preuzeti kada im se pristupi u budućnosti.
  • Komanda "git log --graph" za grafove sa više nezavisnih korijena sada dodaje uvlačenje kako bi se jasno odvojili nepovezani commit-ovi.
  • Uobičajene greške u kucanju, poput navođenja "git push origin/main" umjesto "git push origin main" ili "git branch --set-upstream-to origin main" umjesto "git branch --set-upstream-to=origin/main", sada se otkrivaju i prikazuje se savjet o tome kako koristiti ispravnu varijantu.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster