Rilascio del sistema di gestione dei codici sorgente Git 2.50

È stato pubblicato il rilascio del sistema distribuito di gestione dei testi sorgente Git 2.50. Git si distingue per le sue elevate prestazioni e offre strumenti per lo sviluppo non lineare, basati su diramazioni e fusioni. Per garantire l'integrità della storia e la resilienza alle modifiche retroattive, viene utilizzata l'hashing implicito dell'intera storia precedente in ogni commit, nonché la verifica tramite firme digitali degli sviluppatori di singoli tag e commit. Il codice di Git è distribuito sotto licenza GPLv2+.

Rispetto al rilascio precedente, nella nuova versione sono stati approvati 621 cambiamenti, preparati con la partecipazione di 98 sviluppatori, di cui 35 partecipano per la prima volta allo sviluppo. Le principali novità sono:

  • È stata ampliata la possibilità di suddividere in più pack-file il database degli oggetti inaccessibili ('cruft packs'), ai quali nel repository non ci sono riferimenti (non sono referenziati da branche o tag). Utilizzare più piccoli pack-file invece di uno grande riduce significativamente le operazioni di input/output durante la ripacchettizzazione di repository con un gran numero di oggetti inaccessibili, poiché per ciascuna operazione di ripacchettizzazione non è necessario sovrascrivere tutti i dati.

    Nella nuova versione è stata proposta l'opzione '—combine-cruft-below-size', che consente di organizzare la fusione dei pack-file esistenti, il cui dimensione non supera un valore definito. A differenza dell'opzione '—max-cruft-size' precedentemente disponibile, la nuova opzione '—combine-cruft-below-size' non limita la dimensione massima del pack-file risultante, consentendo una fusione più efficiente dei pack-file nei repository con un gran numero di oggetti inaccessibili, distribuiti su più pack-file.

  • È stata aggiunta la supporto esperimentale per l'aggiornamento incrementale degli indici multi-pack MIDX (multi-pack index), in cui ogni livello dell'indice MIDX con informazioni sulla disponibilità degli oggetti è posizionato in un file bitmap separato. In repository di grandi dimensioni, la forma implementata degli indici consente di aggiungere rapidamente ed efficacemente nuove bitmap di disponibilità degli oggetti man mano che arrivano i commit.
  • Dal codice sorgente è stato rimosso il vecchio motore di esecuzione delle operazioni di fusione 'recursive', sostituito da un motore completamente riprogettato, 'ORT' (Ostensibly Recursive’s Twin), che è più potente, funzionale e facile da mantenere. ORT consente di determinare la possibilità di unire due oggetti senza creare nuovi oggetti nel repository (con il vecchio motore era necessario eseguire il comando 'git merge-tree —write-tree', che scriveva nuovi oggetti nel repository). In Git 2.50, nel comando merge-tree è stata implementata l'opzione '—quiet', che consente di verificare la possibilità di fusione sulla base del codice di ritorno senza scrivere dati nel repository.
  • Nel comando 'git cat-file —batch' e comandi simili è stata aggiunta l'opzione '—filter', che consente di saltare alcuni oggetti durante l'esecuzione dell'operazione. git cat-file —batch-check='%(objectname)' —filter='object:type=tree'
  • Nel comando 'git maintenance' sono state implementate tre nuove azioni: worktree-prune, rerere-gc e reflog-expire. L'azione worktree-prune è destinata alla rimozione di alberi di lavoro (worktrees) obsoleti o danneggiati nel repository. L'azione rerere-gc rimuove le vecchie voci rimaste dopo la risoluzione dei conflitti di fusione. L'azione reflog-expire rimuove oggetti obsoleti e non accessibili dal reflog.
  • È stato aggiunto il comando 'git reflog drop', che rimuove tutti i dati del reflog per il ramo specificato.
  • È stata ottimizzata la gestione e l'utilizzo dei riferimenti, ad esempio è stato implementato un caching dei prefissi dei riferimenti, rimosse verifiche superflue durante l'esecuzione del comando 'git update-ref' e aumentata l'efficienza della ricerca di iteratori di riferimenti esistenti.
  • Per la libreria cURL sono state aggiunte impostazioni KeepAlive: http.keepAliveIdle, http.keepAliveInterval e http.keepAliveCount.
  • Nel comando 'git rev-list' è stata implementata la possibilità di output in un formato adatto per l'analisi automatica, in cui ogni campo è separato dal carattere NUL.
  • Il linguaggio Perl è stato escluso dalle dipendenze necessarie per le utility di lavoro con la documentazione e l'esecuzione del set di test ('make test'). Molti one-liner Perl nei test sono stati sostituiti con funzioni shell o riscritti in linguaggio C.
  • È stato aggiunto un elaboratore userdiff per il formato dei file di configurazione '.ini'.
  • Nel comando send-email è stato migliorato il supporto per il server SMTP di Outlook.

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