Rilascio del sistema di gestione distribuita dei testi sorgente Git 2.24

È disponibile rilascio del sistema di controllo distribuito delle versioni Git 2.24.0. Git è uno dei sistemi di controllo delle versioni più popolari, affidabili e ad alte prestazioni, che offre strumenti flessibili per lo sviluppo non lineare, basati su ramificazione e fusione. Per garantire l'integrità della storia e la resistenza alle modifiche retroattive, viene utilizzata la hash implicita dell'intera storia precedente in ogni commit, è inoltre possibile la verifica tramite firme digitali dei tag e dei commit da parte degli sviluppatori.

Rispetto all'ultima versione, la nuova release include 544 modifiche, preparate con la partecipazione di 78 sviluppatori, di cui 21 hanno partecipato per la prima volta allo sviluppo. Principali novità:

  • È stata aggiunta la supporto per i macro di configurazione, che consentono di passare rapidamente tra diverse serie di impostazioni senza entrare nei dettagli delle opzioni specifiche correlate. Con i macro non è necessario ricordare quali impostazioni devono essere modificate per attivare una certa funzionalità. Ad esempio, in caso di rallentamento del lavoro con un grande repository, potrebbe essere necessario passare a un nuovo meccanismo di indicizzazione, abilitare la compressione dei prefissi dei percorsi e attivare la cache dei file non tracciati, impostando il parametro index.version su 4 e attivando core.untrackedCache. I macro consentono di risparmiare tempo nella ricerca della soluzione adeguata nella documentazione e di attivare immediatamente le impostazioni con ottimizzazioni per repository con un gran numero di file:

    git config feature.manyFiles true

  • Per impostazione predefinita, è attivato il salvataggio degli oggetti sotto forma di grafico dei commit (commit-graph), nel quale per l'indicizzazione non viene utilizzata una lista lineare di hash degli oggetti con collegamenti ad altri oggetti, ma una struttura a grafo. Se in passato, per determinare le versioni contenenti una certa correzione, era necessario caricare ogni oggetto dal disco per cercare i collegamenti, ora, con il salvataggio sotto forma di grafo, è possibile determinare immediatamente tutte le relazioni necessarie. La transizione alla memorizzazione dei commit in forma di grafo nei repository del kernel Linux e Git ha consentito di ottenere un aumento quasi doppio delle prestazioni nelle operazioni con i rami. Per attivare il nuovo metodo di memorizzazione dopo l'aggiornamento a Git 2.24, è necessario eseguire il comando "git gc".

    Tra le modifiche relative al commit-graph, si segnala anche l'uniformità della visualizzazione dell'indicatore di avanzamento nelle operazioni collegate al commit-graph («git commit-graph write», «git commit-graph verify», ecc.). L'indicatore di avanzamento ora viene visualizzato per impostazione predefinita solo nel terminale (per modificare questo comportamento, è necessario utilizzare l'opzione «-[no-]progress»). Inoltre, è stato aggiunto un nuovo parametro di configurazione fetch.writeCommitGraph, che abilita l'aggiornamento automatico del file con il grafo dei commit durante le operazioni di «git fetch» (tutti i commit estratti dai repository esterni entreranno immediatamente nel commit-graph senza la necessità di avviare separatamente auto-gc);

  • Aggiunta il comando per riscrivere la cronologia delle modifiche — «git filter-repo«, che è un'alternativa più semplice al comando «git filter-branch» per eseguire operazioni sulla cronologia delle modifiche nel repository (ad esempio, rimuovere un file dal repository o estrarre la cronologia delle modifiche di una certa cartella). Per aumentare l'efficienza, invece della scansione ordinata per commit in «git filter-repo», le operazioni vengono eseguite su una rappresentazione della cronologia come flusso continuo.

    La filtrazione della cronologia avviene tramite l'opzione «-path-{glob,regex}», che consente di applicare sia maschere semplici che espressioni regolari. Sono inoltre disponibili opzioni per eseguire operazioni di «cerca e sostituisci» o pulire oggetti binari di dimensioni superiori a quelle specificate. Ogni commit riscritto viene contrassegnato con un nuovo identificatore hash SHA-1 e, in base a questo nuovo identificatore, tutte le referenze al commit sostituito vengono aggiornate.

    È disponibile l'opzione «-analyze» per visualizzare un riepilogo con statistiche sul repository (numero di oggetti per tipo, i file e le cartelle più grandi, quali estensioni richiedono più spazio su disco, ecc.). Per estendere le funzionalità, è possibile collegare callback personalizzati in Python, attraverso i quali è possibile sia creare nuovi sottocomandi che gestire vari eventi (ad esempio, nuovi tipi di file);

  • È stata aggiunta l'opzione «—end-of-options», che consente di separare le opzioni dai nomi dei riferimenti, che possono iniziare con il simbolo «-» e essere interpretati come opzioni («git log —end-of-options —super-dangerous-option»). Se nel uso quotidiano tali nomi possono essere escape come «git log ‘refs/heads/—super-dangerous-option'», in script potrebbero esserci stati problemi nella definizione dello spazio dei nomi. Il normale delimitatore » — » in questo caso non è applicabile, poiché è già utilizzato per separare i nomi dei riferimenti dai file (ad esempio, «git log —end-of-options —super-dangerous-option ^master — path/to/file»);
  • Nel comando «git rebase —rebase-merges» sono state aggiunte le opzioni «—strategy» e «—strategy-option» per la selezione della strategia di fusione;
  • È stato aggiunto un nuovo gestore «.git/hooks/pre-merge-commit», chiamato dopo l'esecuzione della fusione, ma prima della registrazione del commit risultante;
  • Nel motore di completamento automatico dei comandi è stata aggiunta la compatibilità per il completamento delle variabili di configurazione legate alle impostazioni di comandi specifici.
    Ad esempio, se hai bisogno di digitare «git -c core.autocrlf=false add path/to/my/file», ma non ricordi il nome esatto della variabile «core.autocrlf», puoi premere Tab per ricevere suggerimenti.

Inoltre, gli sviluppatori di Git hanno aggiunto hanno redatto un codice di comportamento per i partecipanti al progetto, che definisce i principi fondamentali per la risoluzione dei conflitti. Il documento è basato sulle raccomandazioni del «Contributor Covenant», applicato in molti progetti open source, compresi il kernel Linux, Eclipse, Freedesktop, GitLab, Ruby e Kubernetes. Il documento stabilisce pari opportunità per tutti i partecipanti, indipendentemente dalle loro opinioni, età, genere, credenze religiose, livello di istruzione, status sociale e nazionalità. La comunità promuove un modo di comunicare amichevole, comprensione, empatia per i problemi degli altri partecipanti, accettazione della critica costruttiva, e le migliori decisioni per l'intera comunità. Il trolling, le comunicazioni offensive, i tentativi di umiliazione, le molestie, la violazione della privacy, la divulgazione di informazioni personali e altre azioni che possono essere considerate inadeguate durante le comunicazioni professionali non sono tollerate.

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