Objavljen je Git 2.54, distribuirani sustav za upravljanje izvornim kodom. Git se može pohvaliti visokim performansama i pruža nelinearne razvojne mogućnosti temeljene na grananju i spajanju. Kako bi se osigurala povijesna cjelovitost i otpornost na retroaktivne promjene, koristi implicitno hashiranje cijele prethodne povijesti u svakom commitu, kao i digitalne potpise pojedinačnih oznaka i commitova. Git je licenciran pod GPLv2+ licencom.
U usporedbi s prethodnim izdanjem, nova verzija uključuje 770 promjena, kojima je doprinijelo 137 programera (od kojih je 66 bilo novo u razvoju za Git). Ključne nove značajke uključuju:
- Implementirana je naredba "git history", koja pruža eksperimentalne mogućnosti za prepisivanje povijesti commitova, što je lakše i sigurnije za korištenje od ponovnog baziranja commitova pomoću "git rebase". Omogućene su dvije operacije:
- preformuliranje povijesti gita " za prepisivanje poruke u navedenom commitu bez promjene radnog stabla ili indeksa (osim bilješke, ostalo ostaje netaknuto). Na primjer, za ispravljanje tipografske pogreške.
- podjelu povijesti gita » interaktivno podijeliti navedeni commit u dva različita commita, premještajući odabrane dijelove iz izvornog commita u dodatni commit.
Buduća izdanja će uključivati dodatne naredbe: "git history fixup" za ispravljanje commita, "git history drop" za uklanjanje commita, "git history reorder" za promjenu redoslijeda commita i "git history squash" za sažimanje commita.
- Implementirana je nova metoda za definiranje hook-ova u konfiguracijskim datotekama. Umjesto postavljanja skripti s hook-ovima u direktorij ".git/hooks" u svakom repozitoriju, naredbe za pozivanje hook-ova sada se mogu izravno navesti u konfiguracijskim datotekama. Postavke se mogu povezati s repozitorijem ili navesti u konfiguracijskim datotekama koje se primjenjuju na sve repozitorije (/etc/gitconfig) ili korisničke repozitorije (~/.gitconfig). Više hook-ova može se vezati za jedan događaj. Skripte iz ".git/hooks" i dalje će se pozivati, ali se pokreću nakon hook-ova iz konfiguracijskih datoteka. Za pregled popisa hook-ova upotrijebite naredbu "git hook list", a za selektivno onemogućavanje pozivanja hook-ova upotrijebite postavku "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 globalni linter ~/bin/linter --cpp20 lokalni bez-curenja ~/bin/leak-detector
- Naredba "git maintenance" prema zadanim postavkama koristi "geometrijsku" strategiju ("git config set maintenance.strategy geometric"), što smanjuje vrijeme održavanja za velike monorepozitorije. U usporedbi s prethodno korištenom strategijom, koja je koristila logiku sličnu "git gc", nova strategija izbjegava ponovno pakiranje svih objekata i eliminira operacije koje zahtijevaju puno resursa, poput spajanja svih paketnih datoteka (gdje je to moguće, spajanje se vrši u dijelovima i bez čišćenja izbrisanih objekata).
- Objektna baza podataka (ODB) i njezini povezani API-ji migrirani su na novu arhitekturu temeljenu na priključnim pozadinskim sustavima. Ovo restrukturiranje apstrahira format pohrane objekata i omogućit će implementaciju značajki kao što su alternativni pozadinski sustavi i formati objekata, na primjer, za učinkovitiju pohranu velikih binarnih datoteka ili za optimizaciju performansi velikih Git usluga hostinga.
- Naredba "git repo structure", koja prikazuje informacije o strukturi repozitorija, prikazuje ne samo ukupnu veličinu, već i najveće objekte svake vrste, što vam omogućuje procjenu veličine bez korištenja uslužnog programa git-sizer treće strane. $ git repo structure … | * Najveći objekti | | | * Potvrde | | | * Maksimalna veličina [1] | 17.23 KiB | | * Maksimalni broj roditelja [2] | 10 | | * Stabla | | | * Maksimalna veličina [3] | 58.85 KiB | | * Maksimalni broj unosa [4] | 1.18 k | | * Blobovi | | | * Maksimalna veličina [5] | 1019.51 KiB | | * Oznake | | | * Maksimalna veličina [6] | 7.13 KiB |
- U naredbi "git replay", koja se koristi umjesto naredbe "git rebase" za ponovno stvaranje povijesti na poslužitelja Bez radnog stabla, ažuriranja atomskih referenci su omogućena prema zadanim postavkama (umjesto navođenja naredbi update-ref za ručno izvršavanje), implementirana je opcija "--revert" za poništavanje promjena iz niza commitova, rezultirajući prazni commiti se odbacuju i uvedena je mogućnost rekonstrukcije povijesti natrag do korijenskog commita.
- Dodana je opcija "--maximal-only" u "git rev-list" i slične naredbe za prikaz samo commitova koji nisu dostupni drugim commitima.
- Naredba "git repo info" sada ima opciju "--keys" za popis svih poznatih ključeva.
- Prilikom navigacije između blokova koda pomoću tipki "J" i "K" u naredbi "git add -p", već odobreni i preskočeni blokovi sada su označeni. Dodana je opcija "--no-auto-advance" kako bi se onemogućilo automatsko napredovanje na sljedeću datoteku, što vam omogućuje ponovni posjet prethodnim datotekama prije slanja.
- Web sučelje "gitweb" optimizirano je za korištenje na mobilnim uređajima.
- Naredba "git apply --directory" osigurava da su putanje datoteka normalizirane prije upotrebe, kao što je "./un/../normalized/path".
- Mogućnost dodavanja prilagođenih podnaredbi postavljanjem "git-" datoteka je dokumentirana. » u direktoriju s izvršnim datotekama.
- Podrška za klijentske certifikate dodana je naredbi 'git send-email'.
- Naredba "git status" sada ima postavku "status.compareBranches", koja vam omogućuje da odredite grane s kojima ćete usporediti trenutnu granu. [status] compareBranches = @{upstream} @{push}
- Opcija "--trailer" dodana je u git rebase kako bi se olakšalo dodavanje metapodataka svim commitovima. git rebase --trailer "Pregledao: Test »
- Naredba 'git fast-import' sada ima mogućnost zamjene potpisa za commite koji postanu nevažeći nakon uvoza.
- Dodana je podrška za sažimanje višepaketnog indeksa (MIDX), koje kombinira male slojeve MIDX indeksa koji sadrže informacije o dostupnosti objekata i povezane bitmape, smanjujući broj akumuliranih slojeva u dugogodišnjim repozitorijima.
- Naredba "git backfill" sada podržava određivanje revizija (raspona commita) i maski putanja (pathspecs) kako bi se ograničili dijelovi povijesti promjena koji se preuzimaju. git backfill main~100..main git backfill — '*.c'
- Dodani su alternativni oblici za pozivanje naredbe "git config list": "git config -l" i "git config --list".
- Dopusti znakove koji nisu ASCII u aliasima naredbi navedenim u konfiguracijskoj datoteci. [alias "get"] naredba = dohvati
- Promijenjen je prikaz potpisa čiji su GPG ključevi istekli, ali su bili važeći u trenutku potpisivanja commita. Ti se potpisi sada prikazuju kao važeći s napomenom o isteku ključa (prije su bili označeni crvenom bojom, što je stvaralo dojam da nisu važeći).
- Prilikom pristupa repozitorijima putem HTTP-a, kod pogreške 429 (Previše zahtjeva) sada se ispravno obrađuje. Zahtjevi koji uspiju s ovom pogreškom više se ne tretiraju kao fatalni, već kao privremene pogreške za koje operaciju treba ponoviti nakon određenog vremena. Odgoda ponovnog pokušaja postavlja se pomoću opcije "http.retryAfter", broj ponovnih pokušaja je "http.maxRetries", a vrijeme čekanja je "http.maxRetryTime".
Izvor: opennet.ru
