È stata rilasciata la versione 2.53 del sistema di gestione distribuita dei codici sorgenti Git. Git si distingue per le alte prestazioni e offre strumenti per lo sviluppo non lineare basati su ramificazioni e fusioni. Per garantire l'integrità della cronologia e la resistenza alle modifiche retroattive, viene utilizzato l'hashing implicito dell'intera cronologia precedente in ogni commit, oltre alla certificazione con firme digitali degli sviluppatori per singoli tag e commit. Il codice di Git è distribuito sotto licenza GPLv2+.
Rispetto alla versione precedente, in questa nuova release sono stati integrati 466 cambiamenti, preparati con la partecipazione di 70 sviluppatori (21 dei quali hanno preso parte allo sviluppo di Git per la prima volta). Le principali novità sono:
- È stata aggiunta la possibilità di applicare la strategia di impacchettamento dei repository "geometric" ("git repack --geometric") a repository esterni cloni parzialmente, funzionanti in modalità "promisor" (gli oggetti mancanti vengono scaricati all'occorrenza). Durante la reimballatura con l'opzione "--geometric", i file pack con estensione ".promisor" vengono elaborati e impacchettati separatamente. La strategia "geometric" consente di ridurre i tempi di manutenzione di grandi monorepository, grazie a un'imballatura selettiva degli oggetti e all'esclusione di operazioni dispendiose in termini di risorse, come la fusione di tutti i file pack (mantenendo la progressione geometrica della dimensione dei file pack, in cui ogni file pack successivo deve essere almeno due volte più grande di quello precedente).
- Nella squadra «git fast-import» è stata aggiunta l'opzione «—signed-commits=strip-if-invalid» per rimuovere le firme digitali dagli oggetti importati che sono diventati non validi dopo la riscrittura di una parte della cronologia del repository. In precedenza, era possibile importare o eliminare tutte le firme, senza distinzione tra quelle valide e quelle che avevano perso significato. L'opzione «strip-if-invalid» consente di implementare strumenti per mantenere le firme valide e risignare gli oggetti con firme obsolete.
- Nell'output del comando «git repo structure» è stata aggiunta l'informazione sulle dimensioni di tutti gli oggetti raggiungibili (reachable) nel repository, suddivisa per tipo. Le informazioni ora vengono visualizzate in un formato leggibile con le unità di misura e sono mostrate separatamente per le dimensioni effettive e quelle occupate su disco, consentendo di valutare la dimensione complessiva del repository su disco. $ git repo structure | Struttura del repository | Valore | | ——————— | ———- | | * Riferimenti | | | * Conteggio | 1.78 k | | * Rami | 5 | | * Tag | 1.03 k | | * Remoti | 749 | | * Altro | 0 | | | | | * Oggetti raggiungibili | | | * Conteggio | 421.37 k | | * Commit | 88.03 k | | * Alberi | 169.95 k | | * Blob | 162.40 k | | * Tag | 994 | | * Dimensione espansa | 7.61 GiB | | * Commit | 60.95 MiB | | * Alberi | 2.44 GiB | | * Blob | 5.11 GiB | | * Tag | 731.73 KiB | | * Dimensione su disco | 301.50 MiB | | * Commit | 33.57 MiB | | * Alberi | 77.92 MiB | | * Blob | 189.44 MiB | | * Tag | 578.13 KiB |
- Nel comando «git maintenance» è stata aggiunta la sotto-comando «is-needed» per eseguire le operazioni di manutenzione del repository solo se necessario.
- Nel team sperimentale di «git replay» è implementato per impostazione predefinita l'aggiornamento dei riferimenti nella transazione, invece di mostrare dove dovrebbero puntare i riferimenti senza aggiornamento.
- Nel comando «git blame» è stata aggiunta la possibilità di selezionare l'algoritmo di valutazione delle differenze tramite l'opzione «—diff-algorithm=».
- Nel comando «git repo info» è stata aggiunta l'opzione «—all».
- È stata trasferita in Git-for-Windows la supporto per i collegamenti simbolici sulla piattaforma Windows.
Nella versione precedente è stato aggiunto un avviso sull'attivazione predefinita della costruzione dei componenti in linguaggio Rust in Git 2.53. Tuttavia, in realtà, nella versione Git 2.53 sono stati aggiunti solo miglioramenti specifici per il supporto di Rust (possibilità di costruzione senza GNU sed), ma la costruzione con Rust utilizzando Makefile è rimasta disabilitata per impostazione predefinita (richiede l'impostazione del flag WITH_RUST), mentre utilizzando Meson si attiva automaticamente in presenza del compilatore rustc. Nella versione Git 3.0 il toolkit Rust è previsto per essere incluso tra le dipendenze di costruzione obbligatorie.
Fonte: opennet.ru
