È stato presentato il rilascio del sistema distribuito di gestione dei testi sorgente Git 2.53. Git si distingue per le sue elevate prestazioni e offre strumenti per lo sviluppo non lineare, basati su ramificazioni e fusioni di rami. Per garantire l'integrità della storia e la resilienza ai cambiamenti retroattivi, viene utilizzato l'hashing implicito dell'intera storia precedente in ogni commit, oltre alla verifica con firme digitali degli sviluppatori per tag e commit specifici. Il codice di Git è distribuito sotto licenza GPLv2+.
Rispetto alla versione precedente, nella nuova versione sono stati inclusi 466 cambiamenti, preparati con la partecipazione di 70 sviluppatori (21 hanno partecipato per la prima volta allo sviluppo di Git). Le principali novità sono:
- È stata aggiunta la possibilità di applicare la strategia di imballaggio dei repository "geometric" ("git repack --geometric") ai repository esterni parzialmente clonati che operano in modalità "promisor" (gli oggetti mancanti vengono scaricati al bisogno). Durante la reimballaggio con le opzioni "--geometric", i file pack con estensione ".promisor" vengono elaborati e impacchettati separatamente. La strategia "geometric" consente di ridurre i tempi di gestione di grandi monorepository, grazie a un'imballaggio selettivo degli oggetti e all'esclusione di operazioni onerose superflue, come la fusione di tutti i file pack (viene mantenuta una progressione geometrica delle dimensioni dei file pack, in cui ogni successivo file pack deve essere almeno il doppio del precedente).
- Nel comando "git fast-import" è stata aggiunta l'opzione "--signed-commits=strip-if-invalid" per rimuovere le firme digitali dagli oggetti importati, diventati non validi dopo aver riscritto parte della storia del repository. In precedenza era possibile solo importare o rimuovere tutte le firme, senza distinzione tra quelle valide e quelle non più significative. L'opzione "strip-if-invalid" consente di implementare strumenti per preservare le firme valide e risignare gli oggetti con firme non più attuali.
- Nell'output del comando «git repo structure» è stata aggiunta l'informazione sulla dimensione di tutti gli oggetti raggiungibili (reachable) nel repository, suddivisa per tipo. Le informazioni vengono ora visualizzate in modo leggibile, con unità di misura e mostrano separatamente le dimensioni reali e quelle occupate su disco, permettendo di valutare la dimensione complessiva del repository sul 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 | | * Blobs | 162.40 k | | * Tag | 994 | | * Dimensione espansa | 7.61 GiB | | * Commit | 60.95 MiB | | * Alberi | 2.44 GiB | | * Blobs | 5.11 GiB | | * Tag | 731.73 KiB | | * Dimensione su disco | 301.50 MiB | | * Commit | 33.57 MiB | | * Alberi | 77.92 MiB | | * Blobs | 189.44 MiB | | * Tag | 578.13 KiB |
- Nel comando «git maintenance» è stata aggiunta la sottocomando «is-needed» per eseguire operazioni di manutenzione del repository solo quando necessario.
- Nel comando sperimentale «git replay» è implementato di default l'aggiornamento dei riferimenti nella transazione, invece di mostrare dove dovrebbero puntare i riferimenti senza aggiornarli.
- Nel comando «git blame» è stata aggiunta la possibilità di scegliere l'algoritmo di valutazione delle differenze tramite l'opzione «—diff-algorithm=».
- Nel comando «git repo info» è stata aggiunta l'opzione «—all».
- Dal Git-for-Windows è stata trasferita la compatibilità con i collegamenti simbolici per la piattaforma Windows.
Nella precedente versione è stato aggiunto un avviso sull'attivazione predefinita della compilazione dei componenti in Rust in Git 2.53. Tuttavia, nella versione Git 2.53 sono state aggiunte solo specifiche migliorie del supporto per Rust (la possibilità di compilare senza GNU sed), mentre la compilazione con Rust usando Makefile rimane disattivata per impostazione predefinita (richiede l'impostazione del flag WITH_RUST), mentre l'uso di Meson si attiva automaticamente in presenza del compilatore rustc. Nella versione Git 3.0 si prevede di includere gli strumenti Rust tra le dipendenze di compilazione obbligatorie.
Fonte: opennet.ru
