Dopo due mesi di intenso lavoro, la comunità di sviluppo di Git introduce Git versione 2.51, un aggiornamento che Riunisce 506 modifiche, a cui hanno partecipato 91 sviluppatori, di cui 21 hanno contribuito per la prima volta.
Questa versione introduce miglioramenti progettati per migliorare le prestazioni e semplificare la gestione del repository, tra cui ottimizzazioni delle prestazioni per git-push e git-fetch, nonché diverse modifiche in vista del nuovo ramo 3.x.
Punti salienti di Git 2.51
Uno dei punti salienti di Git 2.51 è il Ottimizzazione dei comandi git push e git fetch in repository con un gran numero di riferimenti. La chiave di questo miglioramento è nell'aggiornamento batch, che elabora più collegamenti in un'unica transazione anziché individualmente.
Grazie a questa ottimizzazione, Il backend reftable ora supera in prestazioni il backend dei file tradizionale.Nei test con repository contenenti fino a 10 riferimenti, le prestazioni di git fetch sono aumentate di 000 volte per reftable e di 22 volte per i file, mentre git push è migliorato rispettivamente di 1.25 volte e 18 volte.
Un'altra importante innovazione è l'iIntroduzione dei cosiddetti pacchetti cruft, progettato per memorizzare oggetti inaccessibili che non sono collegati a rami o tag. Questi oggetti, che in precedenza erano sparsi, ora possono essere gestiti in confezioni separates, il che li rende più facili da controllare e riduce le dimensioni degli indici multi-pacchetto (MIDX).
Con la nuova impostazione repack.MIDXMustContainCruft, Git evita di includere questi oggetti negli indici principaliNei test su GitHub, questa configurazione ha ridotto le dimensioni dell'indice del 38%, accelerato le scritture del 35% e migliorato le letture del 5%.
Nuovo approccio al packaging degli oggetti
El il comando git pack-objects incorpora l'opzione –path-walk, che introduce un metodo innovativo per riorganizzare i file di imballaggio. Invece di elaborare gli oggetti in base ai loro hash, Git ora può iterarli in base al loro percorso, impacchettando insieme quelli che condividono la stessa posizione. Questo approccio elimina la necessità di preordinare gli oggetti e si traduce in file di impacchettamento più piccoli ed efficienti.
Anche con questa versione È stato standardizzato un nuovo formato per lo scambio di stati e indici degli alberi di lavoro creati con Git Stash.Ora è possibile esportare e importare gli stash proprio come i rami o i tag, semplificando lo spostamento degli stati da un sistema all'altro.
Ad esempio:
git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash
Miglioramenti ai comandi classici
alcuni I comandi Git hanno ricevuto aggiornamenti rilevanti:
- git cat-file ora segnala oggetti e sottomoduli mancanti, mostrando gli identificatori invece di contrassegnare semplicemente come "mancanti".
- git log trae vantaggio dalle ottimizzazioni del filtro Bloom, velocizzando le ricerche con più percorsi di file.
- I comandi git switch e git restore, considerati sperimentali dal 2019, sono finalmente stabilizzati come alternative moderne a git checkout.
- Il comando git whatchanged, equivalente a git log –raw, è deprecato e verrà rimosso in Git 3.0.
- git for-each-ref riceve l'opzione –start-after, che insieme a –count consente la paginazione dell'output.
- git merge e git pull ora includono l'opzione –compact-summary, che fornisce un formato di riepilogo più conciso.
Supporto C99 e nuove regole di contributo
Git continua ad adattare il suo codice alle caratteristiche dello standard C99. Sebbene dal 2021 sia richiesto un compilatore compatibile, gli sviluppatori si stanno muovendo con cautela per mantenere la compatibilità con i compilatori che lo implementano solo parzialmente.
Inoltre, è stata introdotta una modifica significativa nella politica contributiva: Le patch possono ora essere inviate sotto pseudonimo, una decisione allineata alle regole del kernel Linux e progettata per offrire maggiore flessibilità ai collaboratori.
Guardando avanti a Git 3.0
El Il team di sviluppo ha anche aggiornato la roadmap a Git 3.0., in cui spiccano due modifiche chiave: l'uso predefinito di SHA-256 come identificatore di oggetto e l'adozione del formato reftable per l'archiviazione di riferimenti a branch e tag. Questi miglioramenti mirano a migliorare la sicurezza e l'efficienza in repository sempre più grandi e complessi.
fonte: https://lore.kernel.org