Rilascio del controllo del codice sorgente Git 2.36

Dopo tre mesi di sviluppo è stato rilasciato il sistema di controllo del codice sorgente distribuito Git 2.36. 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, nella nuova versione sono state adottate 717 modifiche, preparate con la partecipazione di 96 sviluppatori, di cui 26 hanno preso parte allo sviluppo per la prima volta. Principali innovazioni:

  • I comandi "git log" e "git show" ora hanno un'opzione "—remerge-diff" che consente di mostrare le differenze tra il risultato complessivo dell'unione e i dati effettivi riflessi nel commit dopo l'elaborazione del comando "merge" , che consente di valutare chiaramente le modifiche apportate a seguito della risoluzione dei conflitti di fusione. Il normale comando "git show" rientra nelle diverse risoluzioni dei conflitti, rendendo le modifiche difficili da comprendere. Ad esempio, nello screenshot sotto la riga “+/-” senza rientro mostra l'ultima risoluzione del conflitto associato alla ridenominazione di sha1 in oid nel commento nel primo ramo, e “+/-” con rientro mostra l'iniziale risoluzione del conflitto causato dalla comparsa di un argomento aggiuntivo nel secondo ramo della funzione dwim_ref().
    Rilascio del controllo del codice sorgente Git 2.36

    Quando si utilizza l'opzione "--remerge-diff", le differenze tra le risoluzioni dei conflitti non vengono separate per ciascun ramo principale, ma vengono mostrate le differenze generali tra il file che presenta conflitti di unione e il file che ha i conflitti risolti.

    Rilascio del controllo del codice sorgente Git 2.36

  • Maggiore flessibilità nella configurazione del comportamento per lo svuotamento delle cache del disco tramite una chiamata alla funzione fsync(). Il parametro core.fsyncObjectFiles precedentemente disponibile è stato suddiviso in due variabili di configurazione core.fsync e core.fsyncMethod, fornendo la possibilità di applicare fsync non solo ai file oggetto (.git/objects), ma anche ad altre strutture git come i collegamenti ( .git /refs), reflog e pack file.

    Usando la variabile core.fsync, puoi specificare un elenco di strutture Git interne per le quali fsync verrà inoltre chiamato dopo un'operazione di scrittura. La variabile core.fsyncMethod consente di selezionare un metodo per svuotare la cache, ad esempio è possibile selezionare fsync per utilizzare la chiamata di sistema con lo stesso nome o specificare solo scrittura per utilizzare il writeback di pagecache.

  • Per proteggersi dalle vulnerabilità che manipolano la sostituzione delle directory .git da parte di altri utenti in sezioni condivise, la verifica del proprietario del repository è stata rafforzata. L'esecuzione di qualsiasi comando git ora è consentita solo nelle proprie directory ".git". Se la directory con il repository appartiene a un altro utente, per impostazione predefinita verrà visualizzato un errore. Questo comportamento può essere disabilitato utilizzando l'impostazione safe.directory.
  • Il comando "git cat-file", destinato all'output del contenuto sorgente degli oggetti Git, è stato integrato con l'opzione "--batch-command", che integra i precedenti "--batch" e "--batch-check" " comandi con la possibilità di selezionare in modo adattivo il tipo di output utilizzando "contenuti <oggetto>" per visualizzare il contenuto o "info <oggetto>" per visualizzare informazioni sull'oggetto. Inoltre, è supportato il comando "flush" per svuotare il buffer di output.
  • Al comando “git ls-tree”, destinato a generare un elenco del contenuto di un albero di oggetti, è stata aggiunta l'opzione “—oid-only” (“—object-only”), simile a “—name-only ”, visualizzando solo gli identificatori degli oggetti per semplificare la chiamata dagli script. È implementata anche l'opzione "--format", che consente di definire il proprio formato di output combinando informazioni su modalità, tipo, nome e dimensione.
  • Il comando “git bisect run” implementa il rilevamento della mancata impostazione del flag del file eseguibile per uno script e in questo caso la visualizzazione di errori con codici 126 o 127 (in precedenza, se lo script non poteva essere eseguito, tutte le revisioni venivano contrassegnate come problematiche) .
  • Aggiunta un'opzione --refetch al comando "git fetch" per recuperare tutti gli oggetti senza informare l'altra parte sui contenuti già presenti nel sistema locale. Questo comportamento può essere utile per il ripristino in seguito a errori quando l'integrità dei dati locali è incerta.
  • I comandi "git update-index", "git checkout-index", "git read-tree" e "git clean" ora supportano gli indici parziali (indice sparse) per migliorare le prestazioni e risparmiare spazio nei repository in cui vengono eseguite operazioni parziali. (checkout sparso).
  • È stato modificato il comportamento del comando “git clone —filter=… —recurse-submodules” che ora porta alla clonazione parziale dei sottomoduli (in precedenza, durante l'esecuzione di tali comandi, il filtro veniva applicato solo al contenuto principale e i sottomoduli clonato completamente senza tenere conto del filtro).
  • Il comando "git bundle" ha aggiunto il supporto per specificare i filtri per posizionare selettivamente i contenuti, in modo simile alle operazioni di clonazione parziale.
  • Aggiunta l'opzione "--recurse-submodules" al comando "git branch" per attraversare ricorsivamente i sottomoduli.
  • Userdiff offre un nuovo gestore per il linguaggio Kotlin.

Fonte: opennet.ru

Aggiungi un commento