Rilascio del controllo del codice sorgente Git 2.38

È stato annunciato il rilascio del sistema di controllo del codice sorgente distribuito Git 2.38. Git è uno dei sistemi di controllo delle versioni più popolari, affidabili e ad alte prestazioni, che fornisce strumenti di sviluppo flessibili e non lineari basati su branching e merging. Per garantire l’integrità della storia e la resistenza a modifiche retroattive, in ogni commit viene utilizzato l’hashing implicito di tutta la storia precedente; è inoltre possibile certificare i singoli tag e commit con firme digitali degli sviluppatori.

Rispetto alla versione precedente, la nuova versione comprendeva 699 modifiche, preparate con la partecipazione di 92 sviluppatori, di cui 24 hanno preso parte allo sviluppo per la prima volta. Principali innovazioni:

  • La struttura principale include l'utility “scalare”, sviluppata da Microsoft per la gestione di repository di grandi dimensioni. L'utilità è stata originariamente scritta in C#, ma git include una versione modificata in C. La nuova utility differisce dal comando git abilitando per impostazione predefinita funzionalità e impostazioni aggiuntive che influiscono sulle prestazioni quando si lavora con repository molto grandi. Ad esempio, quando si utilizza scalare si applica:
    • Clonazione parziale per funzionare con una copia incompleta del repository.
    • Meccanismo integrato per tenere traccia delle modifiche nel file system (FSMonitor), che consente di fare a meno della ricerca nell'intera directory di lavoro.
    • Indici che coprono oggetti in file di pacchetto diversi (multi-pack).
    • file commit-graph con un indice del grafico commit utilizzato per ottimizzare l'accesso alle informazioni sul commit.
    • Lavoro periodico in background per mantenere la struttura ottimale del repository in background, senza bloccare la sessione interattiva (il lavoro viene svolto una volta all'ora per scaricare in modo proattivo nuovi oggetti dal repository remoto e aggiornare il file con il grafico di commit e il processo di compressione il repository viene avviato ogni notte).
    • Modalità "sparseCheckoutCone", che limita i modelli consentiti durante la clonazione parziale.
  • Aggiunta un'opzione --update-refs al comando "git rebase" per aggiornare i rami dipendenti che si sovrappongono ai rami spostati, anziché dover estrarre manualmente ciascun ramo dipendente per passare al commit richiesto.
  • Reso compatibile il comando "git rm" con gli indici parziali.
  • Migliorato il comportamento del comando "git mv AB" quando si sposta un file da un workspace con indici parziali in modalità "cono" ad un ambito esterno che non dispone di questa modalità.
  • Il formato file bitmap è stato ottimizzato per lavorare con repository di grandi dimensioni: è stata aggiunta una tabella indice opzionale con un elenco di commit selezionati e i relativi offset.
  • Il comando “git merge-tree” implementa una nuova modalità in cui, in base a due commit specificati, viene calcolato un albero con il risultato della fusione, come se le storie di questi commit fossero unite.
  • Aggiunta l'impostazione "safe.barerepository" per controllare la capacità di ospitare repository bare (repository che non contengono un albero di lavoro) all'interno di altri repository git. Se impostato su "esplicito", sarà possibile lavorare con repository semplici situati solo nella directory principale. Per poter posizionare i repository nudi nelle sottodirectory, utilizzare il valore "all".
  • Al comando “git grep” è stata aggiunta l'opzione “-m” (“—max-count”), che è simile all'omonima opzione in GNU grep e consente di limitare il numero di corrispondenze visualizzate.
  • Il comando "ls-files" implementa l'opzione "--format" per configurare i campi di output (ad esempio, è possibile abilitare l'output del nome dell'oggetto, delle modalità, ecc.).
  • In “git cat-file”, quando si visualizza il contenuto degli oggetti, è possibile tenere conto dei collegamenti autore-email specificati nel file mailmap.

Fonte: opennet.ru

Aggiungi un commento