Liberazione di cuntrollu di fonte Git 2.39

Dopu dui mesi di sviluppu, u sistema di cuntrollu di fonte distribuitu Git 2.39 hè statu liberatu. Git hè unu di i sistemi di cuntrollu di versione più populari, affidabili è d'altu rendiment, chì furnisce strumenti di sviluppu flexible non lineari basati in ramificazione è fusione. Per assicurà l'integrità di a storia è a resistenza à i cambiamenti retroattivi, l'hashing implicitu di tutta a storia precedente hè aduprata in ogni cummitteddu hè ancu pussibule di certificà e tags individuali è commits cù firma digitale di i sviluppatori.

Comparatu à a versione precedente, a nova versione include 483 cambiamenti, preparati cù a participazione di sviluppatori 86, di quale 31 hà participatu à u sviluppu per a prima volta. Innuvazioni principali:

  • U cumandamentu "git shortlog", cuncepitu per visualizà riassunti cù statistiche da a storia di i cambiamenti, hà aghjustatu una opzione "-gruppu" per un raggruppamentu arbitrariu di cummissioni per campi micca limitati à l'autore o committer. Per esempiu, per vede una lista di sviluppatori cù infurmazioni nantu à u numeru di cambiamenti, tenendu in contu l'aiutu citati in u campu "Co-authored-by", pudete aduprà u cumandimu: git shortlog -ns --group=author - -group=trailer:co-autore-da

    L'output di Shortlog pò esse aggregatu usendu specificatori di furmatu, è l'opzione "--group" pò simplificà significativamente a creazione di rapporti cumplessi è eliminà a necessità di cumandamenti di ordinamentu supplementari. Per esempiu, per creà un rapportu cù infurmazione nantu à quanti cummissioni per una liberazione determinata sò stati accettati in ogni mese, pudete specificà: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 In precedenza, per fà una operazione simile, avaristi bisognu di utilizà l'utilità sort è uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | sorte | uniq -c

  • E capacità di u mecanismu di "cruft packs", cuncepitu per imballà oggetti inaccessibili chì ùn sò micca riferiti in u repository (micca riferiti da rami o tag), sò stati allargati. L'uggetti inaccessibili sò sguassati da u cullettore di basura, ma restanu in u repository per un certu tempu prima di esse eliminati per evità e cundizioni di razza. U mecanismu di "cruft packs" permette di almacenà tutti l'uggetti inaccessibili in un schedariu di pacchettu, è vede e dati nantu à u tempu di mudificazione di ogni ughjettu in una tavula separata, almacenata in un schedariu separatu cù l'estensione ".mtimes", in modu chì facenu. ùn si sovrappone micca cù u tempu tutale di mudificazione.

    A durata di u tempu chì l'uggetti inaccessibili restanu in u repository prima di esse effettivamente eliminati hè determinatu da l'opzione "—prune=". " In ogni casu, mentre ritardu prima di sguassà hè un modu abbastanza efficace è praticu per prevene a corruzzione di u repository per via di e cundizioni di razza, ùn hè micca 100% affidabile. Per fà più faciule per restaurà un repository dannatu, a nova versione furnisce l'abilità di salvà l'uggetti mancanti aghjunghjendu l'opzione "--expire-to" à u cumandamentu "git repack", chì permette di specificà un schedariu per creà un esternu. copia di tutti l'uggetti eliminati. Per esempiu, per salvà l'uggetti inaccessibili chì ùn anu micca cambiatu in l'ultimi minuti 5 in u schedariu backup.git, pudete aduprà u cumandimu: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Aumentate significativamente (finu à u 70%) a velocità di l'operazione "git grep -cached" quandu si cerca in i zoni chì utilizanu clonazione parziale (sparse-checkout) è per quale ci sò indici parziali (sparse index). Nanzu, quandu spicificava l'opzione "-cached", a ricerca hè stata realizata prima in l'indici regulare, è dopu in quelli parziali, chì hà purtatu à ritardi notevuli in a ricerca in grandi repositori.
  • A verificazione di u servitore di a coherenza di l'uggetti novi prima ch'elli sò posti in u repository durante l'operazione "git push" hè stata accelerata. Passendu à a cuntabilità per i ligami dichjarati solu quandu u cuntrollu, in un repository di teste cù 7 milioni di ligami, di quale solu 3% sò cuparti da l'operazione push, l'ottimisazioni introdutte permettenu di riduce u tempu di cuntrollu per 4.5 volte.
  • Per pruteggiri contra i putenziali integer overflows in u codice, u cumandamentu "git apply" limita a dimensione massima di patches chì ponu esse processati. Se a dimensione di u patch supera 1 GB, un errore serà avà visualizatu.
  • Per pruteggiri contra i pussibbili vulnerabili, i cambiamenti sò stati fatti per pulizziari l'infurmazioni innecessarii da l'intestazione sette quandu si usa u modulu h2h3 cù l'opzione GIT_TRACE_CURL=1 o GIT_CURL_VERBOSE=1 cù HTTP/2.
  • Quandu eseguite una verificazione nantu à un ramu chì hè un ligame simbolicu à un altru ramu, u cumandamentu "git symbolic-ref HEAD" mostra avà u nome di u ramu di destinazione invece di u nome di u ligame simbolicu.
  • Aghjunghje supportu per l'argumentu @{-1} à l'opzione "--edit-description" ("git branch —edit-description @{-1}") per edità a descrizzione di una branca precedente.
  • Aggiuntu "git merge-tree --stdin" cumanda per passà una lista di parametri via input standard.
  • Nantu à i sistemi di schedarii di rete, u gestore di fsmonitor, chì monitorizza i cambiamenti in u sistema di schedari, hè disattivatu per automaticamente.

Source: opennet.ru

Add a comment