Liberazione di u sistema di cuntrollu di fonte distribuitu Git 2.22

Intruduttu liberazione di un sistema di cuntrollu di fonte distribuitu git 2.22.0. 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 in ogni cummitteddu hè utilizatu, è hè ancu pussibule di certificà tags individuali è impegni cù firma digitale di sviluppatori.

In cunfrontu à a versione precedente, a nova versione include 745 cambiamenti, preparati cù a participazione di sviluppatori 74, di quale 18 hà participatu à u sviluppu per a prima volta. menu innovazioni:

  • Disponibile da a versione 1.18, u novu modu di rebase commit "git rebase --rebase-merges" rimpiazza l'antica opzione "--preserve-merges", chì hè avà obsoleta. L'operazione "git rebase" hè aduprata per rimpiazzà una seria di cummissioni cù una nova basa commit, per esempiu, per spustà un ramu separatu chì sviluppa una nova funzione à u statu attuale di u ramu maestru, chì include correzioni aghjuntu dopu à u ramu. :

    o - o - o (a mo funzione)

    /

    o - o - o - o - o (maestru)

    o - o - o (a mo funzione)

    /

    o - o - o - o - o (maestru)

    Per priservà a struttura di ramu in un ramu migratu, l'opzione "--preserve-merges" puderia esse aduprata prima, chì, quandu eseguita in modu interattivu (git rebase -i --preserve-merges), hà permessu di edità a storia di commit, ma ùn hà micca garantitu a preservazione cumpleta di a struttura di repository. U novu modu "--rebase-merges" permette di priservà a struttura di i cambiamenti in u ramu chì hè migratu, mentre furnisce una gamma completa di operazioni interattive, cumprese l'eliminazione, a raggruppamentu è a rinominazione di cummissioni.

    Per esempiu, "--rebase-merges" si permette di re-upload commits da un ramu separatu à un novu ramu maestru, mantenendu a struttura di ramu in u ramu migratu, è fate qualchi cambiamenti à i commit notes nantu à a mosca.

  • Aghjunghje supportu per a creazione di un novu ramu basatu annantu à u risultatu di a determinazione di a basa di fusione di dui altri rami (base di fusione, ligame à un antenatu cumuni) utilizendu e custruzzioni "git branch new A...B" è "git checkout -b new" A ... B ", in quale "A ... B" implica a definizione di una basa di fusione trà dui commits specificati, simile à cumu "git checkout A ... B" cambia a HEAD à u cummit di basa è "diff A. ..B" mostra i cambiamenti trà commit "B" è u listessu cum'è commit "A" "Ancestor.

    Per esempiu, quandu u travagliu nantu à un ramu di a mo funzione separata, sta funzione pò esse usata quandu vulete principià da un ramu diversu, per esempiu, da u stessu locu in u ramu maestru da quale u ramu di a mo funzione hè stata verificata. In precedenza, questu era necessariu esaminà manualmente u logu di cambiamentu, chì era sconveniente s'ellu avia una grande storia di cambiamenti, poi eseguisce "git merge-base master my-feature" per calculà l'hash di a basa di fusione trà i rami maestru è my-feature. è creendu un novu ramu relative à l'antenatu cumuni " git branch my-other-feature hash ". In Git 2.22, pudete aduprà a sintassi "git branch my-other-feature A...B" per creà un ramu relative à a basa di fusione di dui altri rami;

  • Aggiunta l'opzione "git branch --show-current" per vede u nome di a filiera ottenuta durante l'operazione di checkout;
  • Aggiunta l'opzione "git checkout -no-overlay - dir", chì permette, quandu si esegue una operazione di checkout, di portà u cuntenutu di u repertoriu dir à una forma chì currisponde cumpletamente à u statu di u ramu maestru. Per esempiu, s'ellu ci hè un schedariu in a copia lucale di u repertoriu dir chì ùn hè micca in u ramu maestru, allora per automaticamente quandu eseguisce "git checkout master - dir" sarà lasciatu, è se u "--no-overlay". ” opzione hè specificata, serà sguassata;
  • U cumandamentu "git diff" usa una API universale per l'opzioni di analisi, chì permette di unificà a gestione di l'opzioni cù altre utilità git. Per esempiu, in "git diff", tutte l'opzioni anu avà i so antagonisti ("--function-context" è "--no-function-context");
  • Aggiunta a capacità di filtrà i tag estesi attaccati à l'impegni in l'output di "git log" ("trailer" - bandiere d'infurmazioni supplementari, cum'è Firmatu da è Co-autore). Hè pussibule di filtrà l'etichette da chjave è valore, per esempiu:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • Un novu mutore di traccia, Trace2, hè statu aghjuntu, chì offre un furmatu di output più flexible è strutturatu. Trace2 permette di cullà a telemetria nantu à l'operazioni eseguite è e dati di rendiment per un analisi più detallatu è debugging (u gestore hè assignatu da l'utilizatore, nisuna data hè mandata esternamente);
  • U rapportu "git bisect" hè statu fattu più leggibile, in quale l'impegni problematichi sò avà più chjaramente evidenziati è statistiche riassuntu nantu à i cambiamenti per ogni schedariu sò visualizati (à u livellu di u numeru di linii cambiati);
  • L'euristiche per a determinazione di rinominazioni di u repertoriu sò state riformulate per eliminà a falsa stallazione di l'etichette di rinominazione. Quandu in dubbitu, tali repertorii sò avà marcati cum'è cunflitti;
  • Un avvisu hè visualizatu quandu pruvate d'installà un tag in un altru tag, chì hè generalmente fattu per sbagliu è pò purtà à stabilisce l'etichetta nantu à u cummit incorrectu (per esempiu, una custruzzione cum'è "git tag -f -m "missaghju aghjurnatu". my-tag1 my-tag2″ risulterà in una tag chì hè stata creata nantu à a vechja tag, mentre chì u sviluppatore s'aspittava chì a nova tag sia installata nantu à u cummit indicatu da u vechju tag);
  • A generazione hè attivata per i repositori di bitmap (struttura di "accessibilità bitmaps" basata in discu), chì almacenanu dati nantu à insemi d'ogetti dispunibuli per ogni impegnu è permettenu di determinà rapidamente a presenza di un oggettu di basa. Questa struttura riduce significativamente u tempu di esecuzione di l'operazioni di ricuperazione di dati (git fetch).

Source: opennet.ru

Add a comment