Git 2.54, un sistema di gestione di codice surghjente distribuitu, hè statu publicatu. Git vanta alte prestazioni è furnisce capacità di sviluppu non lineare basate nantu à a ramificazione è a fusione. Per assicurà l'integrità storica è a resilienza à i cambiamenti retroattivi, usa l'hashing implicitu di tutta a storia precedente in ogni commit, è ancu firme digitali di tag è commit individuali. Git hè licenziatu sottu a licenza GPLv2+.
In paragone cù a versione precedente, a nova versione include 770 cambiamenti, cuntribuiti da 137 sviluppatori (66 di i quali eranu novi à u sviluppu Git). E nuove funzionalità chjave includenu:
- U cumandamentu "git history" hè statu implementatu, furnendu capacità sperimentali per riscrivà a storia di i commit, chì sò più faciuli è più sicuri da aduprà chè u rebase di i commit cù "git rebase". Dui operazioni sò furnite:
- "riformulazione di a storia di git" "per riscrive u missaghju in u commit specificatu senza cambià l'arburu di travagliu o l'indice (eccettu per a nota, u restu ferma intattu). Per esempiu, per curregge un errore di battitura.
- divisione di a storia di git » per dividisce interattivamente u commit specificatu in dui commit diversi, spustendu e parte selezziunate da u commit originale à u commit supplementariu.
E versioni future includeranu cumandamenti supplementari: "git history fixup" per riparà un commit, "git history drop" per rimuovere un commit, "git history reorder" per cambià l'ordine di i commit, è "git history squash" per schiaccià i commit.
- Un novu metudu per definisce i hooks in i fugliali di cunfigurazione hè statu implementatu. Invece di piazzà i scripts cù hooks in u cartulare ".git/hooks" in ogni repositoriu, i cumandamenti per invucà i hooks ponu avà esse specificati direttamente in i fugliali di cunfigurazione. I paràmetri ponu esse ligati à un repositoriu o specificati in i fugliali di cunfigurazione chì s'applicanu à tutti i repositori (/etc/gitconfig) o i repositori di l'utilizatori (~/.gitconfig). Parechji hooks ponu esse ligati à un unicu avvenimentu. I scripts da ".git/hooks" seranu sempre chjamati, ma sò eseguiti dopu à i hooks da i fugliali di cunfigurazione. Per vede a lista di i hooks, aduprate u cumandamentu "git hook list", è per disattivà selettivamente l'invucazione di i hooks, aduprate l'impostazione "hook". .enabled = falsu." [hook "linter"] eventu = pre-commit cumanda = ~/bin/linter --cpp20 [hook "no-leaks"] eventu = pre-commit cumanda = ~/bin/leak-detector $ git hook list pre-commit linter glubale ~/bin/linter --cpp20 lucale no-leaks ~/bin/leak-detector
- U cumandamentu "git maintenance" usa a strategia "geometric" per difettu ("git config set maintenance.strategy geometric"), chì riduce u tempu di mantenimentu per i grandi monorepositori. In paragone cù a strategia aduprata prima, chì aduprava una logica simile à "git gc", a nova strategia evita di riimballà tutti l'uggetti è elimina l'operazioni chì necessitanu assai risorse cum'è a fusione di tutti i packfiles (induve pussibule, a fusione hè fatta in parte è senza eliminà l'uggetti sguassati).
- A basa di dati di l'uggetti (ODB) è e so API assuciate sò state migrate versu una nova architettura basata annantu à backend inseribili. Questa ristrutturazione astrae u furmatu di almacenamentu di l'uggetti è permetterà l'implementazione di funziunalità cum'è backend alternativi è furmati d'uggetti, per esempiu, per un almacenamentu più efficiente di grandi fugliali binari o per ottimizà e prestazioni di grandi servizii di hosting Git.
- U cumandamentu "git repo structure", chì mostra l'infurmazioni nantu à a struttura di u repositoriu, mostra micca solu a dimensione tutale, ma ancu l'uggetti più grandi di ogni tipu, chì vi permette di stimà a dimensione senza aduprà l'utilità git-sizer di terze parti. $ git repo structure … | * Uggetti più grandi | | | * Commits | | | * Dimensione massima [1] | 17.23 KiB | | * Parenti massimi [2] | 10 | | * Arburi | | | * Dimensione massima [3] | 58.85 KiB | | * Entrate massime [4] | 1.18 k | | * Blobs | | | * Dimensione massima [5] | 1019.51 KiB | | * Tags | | | * Dimensione massima [6] | 7.13 KiB |
- In u cumandamentu "git replay", utilizatu invece di "git rebase" per ricreà a storia servitore Senza un arburu funziunale, l'aghjurnamenti atomichi di riferimentu sò attivati per difettu (invece di listà i cumandamenti update-ref da eseguisce manualmente), l'opzione "--revert" hè implementata per annullà i cambiamenti da una seria di commit, i commit vioti risultanti sò scartati, è a capacità di ricustruisce a storia finu à u commit radice hè introdutta.
- Aggiunta l'opzione "--maximal-only" à "git rev-list" è cumandamenti simili per mustrà solu i commit chì ùn sò micca raggiungibili da altri commit.
- U cumandamentu "git repo info" hà avà una opzione "--keys" per elencà tutte e chjave cunnisciute.
- Quandu si naviga trà i blocchi di codice cù i tasti "J" è "K" in u cumandamentu "git add -p", i blocchi digià appruvati è saltati sò avà marcati. L'opzione "--no-auto-advance" hè stata aghjunta per disattivà l'avanzamentu automaticu à u schedariu prossimu, chì vi permette di rivisità i schedarii precedenti prima di fà un commit.
- L'interfaccia web "gitweb" hè stata ottimizzata per l'usu nantu à i dispositi mobili.
- U cumandamentu "git apply --directory" assicura chì i percorsi di i fugliali sianu nurmalizati prima di l'usu, cum'è "./un/../normalized/path".
- A capacità di aghjunghje sottucumandamenti persunalizati piazzendu i fugliali "git-" hè documentata. » in u cartulare cù i fugliali eseguibili.
- U supportu per i certificati di i clienti hè statu aghjuntu à u cumandamentu 'git send-email'.
- U cumandamentu "git status" hà avà una impostazione "status.compareBranches", chì vi permette di specificà rami per paragunà u ramu attuale. [status] compareBranches = @{upstream} @{push}
- L'opzione "--trailer" hè stata aghjunta à git rebase per fà più faciule l'aghjunghje di metadati à tutti i commits. git rebase --trailer "Rivistu da: Test »
- U cumandamentu 'git fast-import' hà avà a capacità di rimpiazzà e firme per i commit chì diventanu invalidi dopu l'impurtazione.
- Aghjuntu u supportu per a cumpattazione di l'indice multi-pack (MIDX), chì combina picculi strati d'indice MIDX chì cuntenenu informazioni nantu à a dispunibilità di l'uggetti è e mappe di bit associate, riducendu u numeru di strati accumulati in i repositori di longa data.
- U cumandamentu "git backfill" avà supporta a specificazione di revisioni (intervalli di commit) è maschere di percorsu (pathspecs) per limità e parte di a storia di i cambiamenti chì sò scaricate. git backfill main~100..main git backfill — '*.c'
- Aggiunte forme alternative per chjamà u cumandamentu "git config list": "git config -l" è "git config --list".
- Permette caratteri non ASCII in i nomi di l'alias di cumanda specificati in u schedariu di cunfigurazione. [alias "get"] command = fetch
- A visualizazione di e firme chì e so chjave GPG sò scadute ma eranu valide à u mumentu di a firma di u commit hè stata cambiata. Queste firme sò avà visualizate cum'è valide cù una nota nantu à a scadenza di a chjave (prima, eranu evidenziate in rossu, dendu l'impressione chì ùn eranu valide).
- Quandu si accede à i repositori via HTTP, u codice d'errore 429 (Troppu Richieste) hè avà trattatu currettamente. E richieste chì fiascanu cù questu errore ùn sò più trattate cum'è fatali, ma cum'è errori tempuranei per i quali l'operazione deve esse ritentata dopu un certu periodu di tempu. U ritardu di ripetizione hè impostu cù l'opzione "http.retryAfter", u numeru di tentativi hè "http.maxRetries", è u timeout hè "http.maxRetryTime".
Source: opennet.ru
