Rilascio del controllo del codice sorgente Git 2.35

Dopo due mesi di sviluppo è stato rilasciato il sistema di controllo del codice sorgente distribuito Git 2.35. 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 comprende 494 modifiche, preparate con la partecipazione di 93 sviluppatori, di cui 35 hanno preso parte allo sviluppo per la prima volta. Principali innovazioni:

  • Le possibilità di utilizzare le chiavi SSH per firmare digitalmente gli oggetti Git sono state ampliate. Per limitare il periodo di validità di più chiavi, è stato aggiunto il supporto per le direttive OpenSSH “valid-before” e “valid-after”, con le quali è possibile garantire il corretto funzionamento delle firme dopo che la chiave è stata ruotata da uno degli sviluppatori. Prima di questo, c'era un problema con la separazione delle firme tra la vecchia e la nuova chiave: se elimini la vecchia chiave, sarà impossibile verificare le firme fatte con essa, e se la lasci, rimarrà possibile creare nuove firme con la vecchia chiave, che è già stata sostituita da un'altra chiave. Utilizzando valido prima e valido dopo è possibile separare l'ambito delle chiavi in ​​base al momento in cui è stata creata la firma.
  • Nell'impostazione merge.conflittiStyle, che consente di selezionare la modalità di visualizzazione delle informazioni sui conflitti durante un'unione, è apparso il supporto per la modalità "zdiff3", che sposta tutte le linee standard specificate all'inizio o alla fine del conflitto all'esterno del conflitto area, che consente una presentazione più compatta delle informazioni.
  • Al comando “git stash” è stata aggiunta la modalità “--staged” che permette di nascondere solo le modifiche aggiunte all'indice, ad esempio in una situazione in cui è necessario posticipare temporaneamente alcune modifiche complesse per poter prima aggiungi ciò che è già pronto e occupati del resto dopo un po'. La modalità è simile al comando “git commit”, scrivendo solo le modifiche apportate all'indice, ma invece di creare un nuovo commit in “git stash —staged”, il risultato viene archiviato nell'area temporanea stash. Una volta che le modifiche sono necessarie, possono essere annullate con il comando “git stash pop”.
  • Un nuovo identificatore di formato è stato aggiunto al comando "git log", "--format=%(describe)", che consente di combinare l'output di "git log" con l'output del comando "git description". I parametri per "git description" sono specificati direttamente all'interno dello specificatore ("-format=%(describe:match= ,escludi= )"), in cui è possibile includere anche tag abbreviati ("-format=%(describe:tags= )") e configurare il numero di caratteri esadecimali per identificare gli oggetti ("—format=%(describe:abbrev= )"). Ad esempio, per elencare gli ultimi 8 commit i cui tag non hanno un tag release candidate e specificando identificatori di 8 caratteri, puoi utilizzare il comando: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642-gb 56bd95 bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • L'impostazione user.signingKey ora supporta nuovi tipi di chiavi che non si limitano al tipo "ssh-" e specificano il percorso completo del file della chiave. I tipi alternativi vengono specificati utilizzando il prefisso "key::", ad esempio "key::ecdsa-sha2-nistp256" per le chiavi ECDSA.
  • La velocità di generazione di un elenco di modifiche nella modalità “—istogramma”, così come quando si utilizza l'opzione “—color-moved-ws”, che controlla l'evidenziazione degli spazi in una differenza di colore, è stata notevolmente aumentata.
  • Il comando "git jump", utilizzato per fornire a Vim informazioni sul salto esatto alla posizione desiderata in un file durante l'analisi dei conflitti di unione, la visualizzazione delle differenze o l'esecuzione di un'operazione di ricerca, fornisce la possibilità di restringere i conflitti di unione coperti. Ad esempio, per limitare le operazioni solo alla directory "foo", è possibile specificare "git jump merge - foo" e per escludere la directory "Documentation" dall'elaborazione - "git jump merge - ':^Documentation'"
  • Si è lavorato per standardizzare l'uso del tipo "size_t" anziché "unsigned long" per i valori che rappresentano la dimensione degli oggetti, il che ha reso possibile l'utilizzo dei filtri "clean" e "smudge" con file di dimensioni superiori a 4 GB su tutte le piattaforme, comprese le piattaforme con modello dati LLP64, il tipo “unsigned long” in cui è limitato a 4 byte.
  • L'opzione “-empty=(stop|drop|keep)” è stata aggiunta al comando “git am”, che consente di selezionare il comportamento per i messaggi vuoti che non contengono patch durante l'analisi delle patch dalla casella di posta. Il valore "stop" terminerà l'intera operazione di patch, "drop" salterà una patch vuota e "keep" creerà un commit vuoto.
  • Aggiunto supporto per indici parziali (indice sparse) ai comandi "git reset", "git diff", "git beast", "git fetch", "git pull" e "git ls-files" per migliorare le prestazioni e risparmiare spazio in repository, in cui vengono eseguite operazioni di clonazione parziale (sparse-checkout).
  • Il comando "git sparse-checkout init" è stato deprecato e dovrebbe essere sostituito da "git sparse-checkout set".
  • Aggiunta l'implementazione iniziale di un nuovo backend "reftable" per l'archiviazione di riferimenti come rami e tag nel repository. Il nuovo backend utilizza l'archiviazione a blocchi utilizzata dal progetto JGit ed è ottimizzato per archiviare un numero molto elevato di riferimenti. Il backend non è ancora integrato con il sistema di ref e non è pronto per l'uso pratico.
  • La tavolozza dei colori del comando "git grep" è stata modificata per corrispondere all'utilità GNU grep.

Fonte: opennet.ru

Aggiungi un commento