Eldono de fontkontrolo Git 2.36

Post tri monatoj da evoluo, la distribuita fontkontrola sistemo Git 2.36 estis liberigita. 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 la historio kaj reziston al retroaktivaj ŝanĝoj, implicita hashing de la tuta antaŭa historio estas uzata en ĉiu komit; ankaŭ eblas atesti individuajn etikedojn kaj transiĝojn per ciferecaj subskriboj de la programistoj.

Kompare kun la antaŭa eldono, la nova versio inkluzivas 717 ŝanĝojn, preparitajn kun la partopreno de 96 programistoj, el kiuj 26 unuafoje partoprenis en evoluo. Ĉefaj novigoj:

  • La komandoj "git log" kaj "git show" nun havas "—remerge-diff" opcion, kiu ebligas al vi montri la diferencojn inter la ĝenerala rezulto de la kunfando kaj la realaj datumoj reflektitaj en la kommit post prilaborado de la "merge" komando. , kiu ebligas al vi klare taksi la ŝanĝojn faritajn kiel rezulto solvante fuziokonfliktojn. La normala "git show" komando indentigas la malsamajn konfliktsolvojn, igante ŝanĝojn malfacilaj kompreneblaj. Ekzemple, en la ekrankopio sub la linio "+/-" sen indentaĵo montras la lastan rezolucion de la konflikto asociita kun la renomado de sha1 al oid en la komento en la unua branĉo, kaj "+/-" kun indentaĵo montras la komencan. solvado de la konflikto kaŭzita de apero de plia argumento en la dua branĉo en la funkcio dwim_ref().
    Eldono de fontkontrolo Git 2.36

    Kiam oni uzas la opcion "--remerge-diff", la diferencoj inter konfliktsolvoj ne estas apartigitaj por ĉiu gepatra branĉo, sed la ĝeneralaj diferencoj inter la dosiero kiu havas kunfandi konfliktojn kaj la dosiero kiu havas la konfliktojn solvitaj estas montritaj.

    Eldono de fontkontrolo Git 2.36

  • Pliigita fleksebleco en agordo de la konduto por purigado de diskkaŝmemoroj per voko al la fsync() funkcio. La antaŭe disponebla parametro core.fsyncObjectFiles estis dividita en du agordajn variablojn core.fsync kaj core.fsyncMethod, havigante la kapablon apliki fsync ne nur al objektodosieroj (.git/objects), sed ankaŭ al aliaj git-strukturoj kiel ligiloj ( .git /refs), reflog kaj paki dosierojn.

    Uzante la variablon core.fsync, vi povas specifi liston de internaj Git-strukturoj por kiuj fsync aldone estos vokita post skriba operacio. La variablo core.fsyncMethod ebligas al vi elekti metodon por purigi la kaŝmemoron, ekzemple, vi povas elekti fsync por uzi la samnoman sisteman alvokon, aŭ specifi nur skribon por uzi pagecache-reskribon.

  • Por protekti kontraŭ vundeblecoj, kiuj manipulas anstataŭigon de aliaj uzantoj de .git-dosierujoj en komunajn sekciojn, la kontrolado de deponejo-posedanto estis plifortigita. Efektivigi iujn ajn git-komandojn nun estas permesita nur en siaj propraj dosierujoj ".git". Se la dosierujo kun la deponejo apartenas al alia uzanto, tiam eraro montriĝos defaŭlte. Ĉi tiu konduto povas esti malŝaltita per la agordo safe.directory.
  • La komando "git cat-file", celita por eligi la fontenhavon de Git-objektoj, estis kompletigita per la opcio "--batch-command", kiu kompletigas la antaŭe disponeblajn "--batch" kaj "--batch-check". ” komandoj kun la kapablo adapte elekti la eligspecon uzante la “ enhavon " por montri enhavon aŭ "info " por montri informojn pri la objekto. Aldone, la "flush" komando estas subtenata por forĵeti la produktaĵbufron.
  • Al la komando "git ls-tree", celita por generi liston de la enhavo de objekto-arbo, la opcio "—oid-only" ("—object-nly") estis aldonita, simile al "—name-only". ”, montrante nur objektajn identigilojn por simpligi la vokon de skriptoj. Ankaŭ efektivigita estas la opcio "--format", kiu permesas vin difini vian propran eligformaton kombinante informojn pri reĝimo, tipo, nomo kaj grandeco.
  • La komando "git bisect run" efektivigas la detekton de ne agordi la ruleblan dosierflagon por skripto kaj en ĉi tiu kazo montri erarojn kun kodoj 126 aŭ 127 (antaŭe, se la skripto ne povus esti rulita, ĉiuj revizioj estis markitaj kiel havantaj problemojn) .
  • Aldonis opcion --refetch al la komando "git fetch" por preni ĉiujn objektojn sen informi la alian partion pri la enhavo jam en la loka sistemo. Ĉi tiu konduto povas esti utila por renormaliĝi post fiaskoj kiam la integreco de lokaj datumoj estas necerta.
  • La komandoj "git update-index", "git checkout-index", "git read-tree" kaj "git clean" nun subtenas partajn indeksojn (maldensa indekso) por plibonigi rendimenton kaj ŝpari spacon en deponejoj kie partaj operacioj estas faritaj. (maldensa-ĉesado).
  • La konduto de la komando "git clone —filter=... —recurse-submodules" estis ŝanĝita, kio nun kondukas al parta klonado de submoduloj (antaŭe, dum ekzekuto de tiaj komandoj, la filtrilo estis aplikita nur al la ĉefa enhavo, kaj submoduloj estis; klonita tute sen konsideri la filtrilon).
  • La komando "git bundle" aldonis subtenon por specifi filtrilojn por selekteme meti enhavon, simile al partaj klonaj operacioj.
  • Aldonita "--recurse-submodules" opcio al la "git branch" komando por trairi submodulojn rekursie.
  • Userdiff ofertas novan pritraktilon por la Kotlin-lingvo.

fonto: opennet.ru

Aldoni komenton