Izdanje sustava upravljanja izvorom Git 2.54

Predstavljen je izid razdeljenega sistema za upravljanje izvorno kodo Git 2.54. Git se odlikuje z visoko zmogljivostjo in ponuja orodja za nelinearni razvoj, ki temeljijo na razvejanju in združevanju vej. Za zagotavljanje celovitosti zgodovine in odpornosti na spremembe "za nazaj" se uporablja implicitno hashiranje celotne prejšnje zgodovine v vsakem commit-u, pa tudi overjanje s pomočjo digitalnih podpisov razvijalcev posameznih oznak in commitov. Koda Git se distribuira pod licenco GPLv2+.

V primerjavi s prejšnjim izidom je v novo različico vključeno 770 sprememb, ki so jih pripravili 137 razvijalcev (66 jih je prvič sodelovalo pri razvoju Gita). Glavne novosti:

  • Uvedena je bila ukazna »git history«, ki ponuja eksperimentalne možnosti za prepisovanje zgodovine sprememb, ki so bolj preproste in varne za uporabo kot rebase commit-ov z ukazom »git rebase«. Na voljo sta dve operaciji:
    • »git history reword « za prepisovanje sporočila v določenem commit-u brez spremembe delovnega prostora in indeksa (razen opombe, ostalo ostane nedotaknjeno). Na primer, za popravljanje tipkarske napake.
    • »git history split « za interaktivno razdelitev določenega commit-a na dva različna commit-a s prenosom izbranih delov iz izvirnega commit-a v dodatni commit.

    V prihodnjih izdajah pričakujemo dodajanje dodatnih ukazov: »git history fixup« za popravilo commit-a, »git history drop« za odstranitev commit-a, »git history reorder« za spremembo zaporedja commit-ov in »git history squash« za združevanje commit-ov.

  • Izvedena je nova metoda za određivanje hook handler-a u konfiguracijskim datotekama. Umesto da se skripti s handler-ima smeštaju u direktorijumu „.git/hooks“ u svakom repozitorijumu, komande za pozivanje handler-a sada se mogu direktno postaviti u konfiguracijske datoteke. Podešavanja se mogu vezati za repozitorijum ili navesti u konfiguracijskim datotekama koje važe za sve repozitorijume (/etc/gitconfig) ili za korisničke repozitorijume (~/.gitconfig). Moguće je povezati više handler-a na jedan događaj. Skripte iz „.git/hooks“ i dalje se pozivaju, ali se pokreću nakon handler-a iz datoteka sa konfiguracijom. Za pregled liste handler-a treba koristiti komandu „git hook list“, a za selektivno isključivanje poziva handler-a — podešavanje „hook..enabled = false”. [hook „linter”] event = pre-commit command = ~/.bin/linter —cpp20 [hook „no-leaks”] event = pre-commit command = ~/.bin/leak-detector $ git hook list pre-commit global linter ~/.bin/linter —cpp20 local no-leaks ~/.bin/leak-detector
  • U komandi „git maintenance” po defaultu je aktivna strategija „geometric” („git config set maintenance.strategy geometric”), koja omogućava smanjenje vremena održavanja velikih monorepozitorijuma. U poređenju s ranije korišćenom strategijom, koja koristi logiku kao u komandi „git gc”, nova strategija izbegava ponovno pakovanje svih objekata i isključuje prekomerno resursno zahtevne operacije, kao što je spajanje svih pack-datoteka (ukoliko je moguće, spajanje se vrši delimično i bez čišćenja obrisanih objekata).
  • Baza podataka objekata (ODB) i povezani API su preneseni na novu arhitekturu, zasnovanu na korišćenju modularnih backend-a. Restrukturiranje apstrahuje format skladištenja objekata i u budućnosti će omogućiti implementaciju mogućnosti, kao što su alternativni backend-i i formati objekata, na primer, za efikasnije skladištenje velikih binarnih datoteka ili za optimizaciju rada velikih git hosting-a.
  • V ekipi «git repo structure», ki prikazuje informacije o strukturi repozitorija, je omogočeno prikazovanje ne le skupne velikosti, temveč tudi največjih objektov za vsak tip. Tako se lahko pri oceni velikosti zadošča brez uporabe zunanje aplikacije git-sizer. $ git repo structure … | * Največji objekti | | | * Komitiranje | | | * Maksimalna velikost [1] | 17.23 KiB | | * Maksimalni starši [2] | 10 | | * Drevesa | | | * Maksimalna velikost [3] | 58.85 KiB | | * Maksimalni vnosi [4] | 1.18 k | | * Blobi | | | * Maksimalna velikost [5] | 1019.51 KiB | | * Oznake | | | * Maksimalna velikost [6] | 7.13 KiB |
  • V ekipi «git replay», ki se uporablja namesto «git rebase» za ponovno ustvarjanje zgodovine na strežnikom brez delovnega drevesa, je privzeto vključeno atomarno posodabljanje referenc (namesto izpisa seznama ukazov update-ref za ročno izvedbo), dodana je možnost «—revert» za razveljavitev sprememb iz niza komitov, omogočeno je odstranjevanje resultantnih praznih komitov in dodana je možnost ponovnega ustvarjanja zgodovine vse do korenskega komita.
  • V «git rev-list» in podobne ukaze je dodana možnost «—maximal-only» za prikaz samo teh komitov, ki jih ni mogoče doseči z drugimi komiti.
  • V ekipo «git repo info» je dodana možnost «—keys» za izpis seznama vseh znanih ključev.
  • V ekipi «git add -p» je pri navigaciji med bloki kode s tipkama «J» in «K» omogočeno označevanje že odobrenih in preskočenih blokov. Dodana je možnost «—no-auto-advance» za onemogočanje samodejnega prehoda na naslednjo datoteko, kar omogoča vračanje k prejšnjim datotekam pred komitom.
  • Izvedena je optimizacija spletnega vmesnika «gitweb» za delovanje na mobilnih napravah.
  • V ekipi «git apply —directory» je pred uporabo zagotovljena normalizacija potov do datotek, kot so «.\/un\/..\/normalized\/path».
  • Dokumentirana je možnost dodajanja lastnih podkomand preko namestitve datotek «git-<cmd>» v imeniku z izvajalnimi datotekami.
  • V ekipo «git send-email» je dodana podpora za odjemalske certifikate.
  • Za ekipo «git status» je bila realizirana nastavitev «status.compareBranches», preko katere lahko določite veje, s katerimi bo potekalo primerjanje trenutne veje. [status] compareBranches = @{upstream} @{push}
  • V «git rebase» je dodana možnost «—trailer» za poenostavitev dodajanja metapodatkov v vse komite. git rebase —trailer «Reviewed-by: Test <test@example.com>»
  • V ekipi „git fast-import“ je dodana možnost zamenjave podpisov za spremembe, ki so postale neveljavne po uvozu.
  • Dodana je podpora za pakiranje (compaction) večpaketnih indeksov MIDX (multi-pack index), pri čemer se združijo manjši sloji MIDX-indeksa z informacijami o dostopnosti objektov in povezanimi bitmap datotekami, kar omogoča zmanjšanje števila nabranih slojev v dolgo obstoječih repozitorijih.
  • V ekipi „git backfill“ je bila implementirana možnost navedbe revizij (intervali sprememb) in mask poti (pathspec) za omejevanje nalaganih delov zgodovine sprememb. git backfill main~100..main git backfill — ‘*.c’
  • Dodane so alternativne oblike klica ukaza „git config list“ — „git config -l“ in „git config —list“.
  • Dovoljena je uporaba ne-ASCII znakov v imenih psevdonimov ukazov, določenih v konfiguracijski datoteki. [alias „pridobi“] command = fetch
  • Изменено отображение подписей, у которых истёк срок действия GPG-ключей, но которые были валидны на момент подписания коммита. Подобные подписи теперь отображаются как корректные с пометкой об устаревании ключа (ранее они подсвечивались красным цветом, что создавало впечатление об их некорректности).
  • Pri dostopu do repozitorijev preko HTTP je zagotovljena obravnava napake s kodo 429 (Preveč zahtevkov). Zaključeni zahtevki s to napako zdaj niso obravnavani kot usodna težava, temveč kot začasna napaka, pri kateri je smiselno po določenem času ponoviti operacijo. Zamuda pred ponovitvijo se nastavi preko možnosti „http.retryAfter“, število ponovitev — „http.maxRetries“, čas čakanja — „http.maxRetryTime“.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster