Liberigo de distribuita fontkontrolsistemo Git 2.22

Enkondukita liberigo de la distribuata fontkontrolsistemo git 2.22.0. Git estas unu el la plej popularaj, fidindaj kaj alt-efikecaj versikontrolaj sistemoj, provizante flekseblajn ne-liniajn evoluilojn bazitajn sur disbranĉigo kaj kunfandado. Por certigi la integrecon de historio kaj reziston al retroaktivaj ŝanĝoj, implicita hashing de la tuta antaŭa historio en ĉiu kommit estas uzata, kaj ankaŭ eblas atesti individuajn etikedojn kaj kommitaĵojn per ciferecaj subskriboj de programistoj.

Kompare kun la antaŭa eldono, la nova versio inkludis 745 ŝanĝojn, preparitajn kun la partopreno de 74 programistoj, el kiuj 18 partoprenis en evoluo por la unua fojo. Ĉefa novigoj:

  • Disponebla ekde eldono 1.18, la nova commit rebase reĝimo "git rebase --rebase-merges" anstataŭigas la malnovan "--preserve-merges" opcion, kiu nun estas malrekomendita. La operacio "git rebase" estas uzata por anstataŭigi serion de kommits per nova baza kommit, ekzemple por movi apartan branĉon, kiu disvolvas iun novan funkcion al la nuna stato de la majstra branĉo, kiu inkluzivas korektojn aldonitajn post la branĉo. :

    o - o - o (mia-trajto)

    /

    o - o - o - o - o (majstro)

    o - o - o (mia-trajto)

    /

    o - o - o - o - o (majstro)

    Por konservi la branĉostrukturon en migrita branĉo, la opcio "--preserve-merges" antaŭe povus esti uzata, kiu, kiam ĝi ruliĝas en interaga reĝimo (git rebase -i --preserve-merges), permesis redakti la commit-historion, sed ne garantiis kompletan konservadon de la deponeja strukturo. La nova "--rebase-merges" reĝimo permesas konservi la strukturon de ŝanĝoj en la branĉo migrita, dum li provizas plenan gamon da interagaj operacioj, inkluzive de forigo, regrupigo kaj renomado de komitaĵoj.

    Ekzemple, "--rebase-merges" permesas al re-alŝutu commits de aparta branĉo al pli nova majstra branĉo, konservante la branĉostrukturon en la migrita branĉo, kaj faru kelkajn ŝanĝojn al la kommit-notoj sur la flugo.

  • Aldonita subteno por krei novan branĉon bazitan sur la rezulto de determini la kunfandan bazon de du aliaj branĉoj (kunfandi bazon, ligante al komuna praulo) uzante la konstruojn "git branch new A...B" kaj "git checkout -b new. A...B", en kiu "A...B" implikas difini kunfandan bazon inter du specifitaj komits, simile al kiel "git checkout A...B" ŝanĝas la KAPITON al la baza kommit kaj "diff A. ..B" montras la ŝanĝojn inter commit "B" kaj la sama kiel commit "A" "Ancetor.

    Ekzemple, kiam vi laboras pri aparta branĉo de mia funkcio, ĉi tiu funkcio povas esti uzata kiam vi volas komenci de alia branĉo, ekzemple, de la sama loko en la ĉefbranĉo, el kiu la branĉo de mia funkcio estis kontrolita. Antaŭe, ĉi tio postulis permane ekzameni la ŝanĝprotokolon, kio estis maloportuna se vi havis grandan historion de ŝanĝoj, tiam ruli "git merge-base master my-feature" por kalkuli la haŝon de la kunfanda bazo inter la majstra kaj mia-funkcia branĉoj. kaj kreante novan branĉon rilate al la komuna praulo " git branch mia-alia-trajto hash." En Git 2.22, vi povas uzi la sintakson "git-branĉo mia-alia-trajto A...B" por krei branĉon rilate al la kunfanda bazo de du aliaj branĉoj;

  • Aldonita "git branch --show-current" opcio por montri la nomon de la branĉo akirita dum la kasa operacio;
  • Aldonita la opcio "git checkout —no-overlay — dir", kiu ebligas, dum elfarado de kontrolo, alporti la enhavon de la dosierujo dir al formo kiu plene respondas al la stato de la ĉefbranĉo. Ekzemple, se estas dosiero en la loka kopio de la dirdosierujo, kiu ne estas en la majstra branĉo, tiam defaŭlte dum la ekzekuto de "git checkout master - dir" ĝi restos, kaj se la "--no-overlay". ” opcio estas specifita, ĝi estos forigita;
  • La komando "git diff" uzas universalan API por analizi opciojn, kio ebligas unuigi opciotraktadon kun aliaj git-utiloj. Ekzemple, en “git diff”, ĉiuj opcioj nun havas siajn antagonistojn (“--function-context” kaj “--no-function-context”);
  • Aldonis la kapablon filtri plilongigitajn etikedojn alfiksitajn al kommits en la eligo "git log" ("antaŭfilmo" - kromaj informaj flagoj, kiel Subskribita de kaj Kunaŭtoro). Eblas filtri etikedojn per kaj ŝlosilo kaj valoro, ekzemple:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • Nova spurmotoro, Trace2, estis aldonita, ofertante pli flekseblan kaj strukturitan eligformaton. Trace2 permesas kolekti telemetrion pri ekzekutitaj operacioj kaj agado-datumoj por pli detala analizo kaj senararigado (la prizorganto estas asignita de la uzanto, neniuj datumoj estas senditaj ekstere);
  • La raporto "git bisek" fariĝis pli legebla, en kiu problemaj komitaĵoj nun estas pli klare elstarigitaj kaj resumaj statistikoj pri ŝanĝoj por ĉiu dosiero estas montrata (je la nivelo de la nombro da linioj ŝanĝitaj);
  • La heŭristiko por determini dosierujajn renomojn estis reverkitaj por elimini falsan instaladon de renomaj etikedoj. Dum dubo, tiaj dosierujoj nun estas markitaj kiel konfliktantaj;
  • Averto montriĝas kiam vi provas instali etikedon sur alia etikedo, kio kutime estas farita erare kaj povas konduki al agordo de la etikedo sur la malĝusta komit (ekzemple, konstruo kiel "git tag -f -m "ĝisdatigita mesaĝo" my-tag1 my- tag2″ rezultigos etikedon kreitan sur la malnova etikedo, dum la programisto atendis, ke la nova etikedo estos instalita sur la kommit indikita de la malnova etikedo);
  • Generacio estas ebligita por bitmapaj deponejoj (disk-bazita "atingebla bitmaps" strukturo), kiuj stokas datumojn pri aroj de objektoj disponeblaj por ĉiu transdono kaj permesas vin rapide determini la ĉeeston de baza objekto. Ĉi tiu strukturo signife reduktas la ekzekuttempon de operacioj de retrovo de datumoj (git fetch).

fonto: opennet.ru

Aldoni komenton