Rilascio del sistema di gestione delle versioni Git 2.36

Dopo tre mesi di sviluppo, è stata pubblicata la versione 2.36 del sistema di gestione distribuita del codice sorgente Git. Git è uno dei sistemi di controllo versione più popolari, affidabili e ad alte prestazioni, che offre strumenti flessibili per lo sviluppo non lineare, basati su ramificazioni e fusioni di rami. Per garantire l'integrità della storia e la resistenza alle modifiche retroattive, viene utilizzata la hashing implicita dell'intera storia precedente in ogni commit; è possibile anche la verifica tramite firme digitali dei singoli tag e commit dei sviluppatori.

Rispetto alla versione precedente, la nuova versione include 717 modifiche, sviluppate con la partecipazione di 96 sviluppatori, di cui 26 hanno partecipato per la prima volta. Le principali novità:

  • Nei comandi «git log» e «git show» è stata aggiunta l'opzione «—remerge-diff», che consente di mostrare le differenze tra il risultato generale della fusione e i dati effettivi riflessi nel commit dopo l'esecuzione del comando «merge». Ciò permette di valutare visivamente le modifiche effettuate durante la risoluzione dei conflitti di fusione. Il comando standard «git show» separa le diverse risoluzioni dei conflitti con un rientro, rendendo difficile comprendere le modifiche. Ad esempio, nello screenshot qui sotto, la linea «+/-» senza rientro mostra l'ultima risoluzione di conflitto relativa alla modifica di un nome nel primo ramo sha1 in oid nel commento, mentre «+/-» con rientro mostra la risoluzione iniziale del conflitto, causata dall'aggiunta di un argomento nel secondo ramo nella funzione dwim_ref().
    Rilascio del sistema di gestione delle versioni Git 2.36

    Quando si utilizza l'opzione «—remerge-diff», le differenze tra le risoluzioni dei conflitti non vengono separate per ciascun ramo genitore, ma viene mostrata la differenza complessiva tra il file contenente conflitti di fusione e il file in cui i conflitti sono stati risolti.

    Rilascio del sistema di gestione delle versioni Git 2.36
  • È stata aumentata la flessibilità nella configurazione del comportamento di svuotamento della cache dei dischi tramite la chiamata della funzione fsync(). Il parametro precedentemente disponibile core.fsyncObjectFiles è stato suddiviso in due variabili di configurazione, core.fsync e core.fsyncMethod, che consentono di applicare fsync non solo ai file con oggetti (.git/objects), ma anche ad altre strutture di git, come i riferimenti (.git/refs), il reflog e i pack-file.

    Tramite la variabile core.fsync è possibile specificare un elenco di strutture interne di Git per le quali, dopo l'operazione di scrittura, verrà eseguita inoltre la chiamata di fsync. La variabile core.fsyncMethod consente di scegliere il metodo per svuotare la cache; ad esempio, è possibile scegliere fsync per applicare la chiamata di sistema con lo stesso nome, oppure specificare writeout-only per applicare la scrittura posticipata (pagecache writeback).

  • Per proteggere da vulnerabilità che sfruttano la sostituzione delle directory .git da parte di altri utenti in sezioni condivise, è stata intensificata la verifica del proprietario del repository. L'esecuzione di qualsiasi comando git è ora consentita solo nelle proprie directory '.git'. Se la directory del repository appartiene a un altro utente, verrà visualizzato un errore per impostazione predefinita. Questo comportamento può essere disattivato mediante l'impostazione safe.directory.
  • Nel comando 'git cat-file', destinato a visualizzare il contenuto sorgente degli oggetti Git, è stata aggiunta l'opzione '--batch-command', che integra i comandi disponibili precedentemente '--batch' e '--batch-check', consentendo una scelta adattiva del tipo di output attraverso l'indicazione 'contents ' per visualizzare il contenuto o 'info ' per visualizzare le informazioni sull'oggetto. Inoltre, viene supportato il comando 'flush' per svuotare il buffer di output.
  • Nel comando «git ls-tree», progettato per generare un elenco del contenuto dell'albero degli oggetti, è stata aggiunta l'opzione «—oid-only» («—object-only»), che, analogamente a «—name-only», restituisce solo gli identificatori degli oggetti per semplificare la chiamata da script. È stata inoltre implementata l'opzione «—format» che consente di definire un formato di output personalizzato, combinando informazioni su modalità, tipo, nome e dimensione.
  • Nel comando «git bisect run» è stata implementata la definizione di non impostazione per il copione del segnale di file eseguibile e l'output in tal caso di errori con codici 126 o 127 (in precedenza, se il copione non poteva essere avviato, tutte le revisioni venivano contrassegnate come problematiche).
  • Nel comando «git fetch» è stata aggiunta l'opzione «—refetch» per estrarre tutti gli oggetti senza informare l'altra parte riguardo al contenuto già presente nel sistema locale. Un comportamento di questo tipo può essere utile per ripristinare lo stato dopo un guasto, quando non si ha certezza dell'integrità dei dati locali.
  • Nei comandi «git update-index», «git checkout-index», «git read-tree» e «git clean» è stata aggiunta la supporto per gli indici parziali (sparse index), che migliorano le prestazioni e risparmiano spazio nei repository in cui vengono effettuate operazioni di clonazione parziale (sparse-checkout).
  • Comportamento del comando «git clone —filter=… —recurse-submodules» modificato, ora porta a una clonazione parziale dei submoduli (in precedenza, con comandi simili, il filtro veniva applicato solo al contenuto principale, mentre i submoduli venivano clonati completamente senza tener conto del filtro).
  • Nel comando «git bundle» è stata aggiunta la supporto per la specifica di filtri per l'inserimento selettivo del contenuto, analogamente alle operazioni di clonazione parziale.
  • Nel comando «git branch» è stata aggiunta l'opzione «—recurse-submodules» per la navigazione ricorsiva dei submoduli.
  • In userdiff è stato proposto un nuovo gestore per il linguaggio Kotlin.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster