Выпуск сістэмы кіравання зыходнымі тэкстамі Git 2.36

Пасля трох месяцаў распрацоўкі апублікаваны выпуск размеркаванай сістэмы кіравання зыходнымі тэкстамі Git 2.36. Git з'яўляецца адной з самых папулярных, надзейных і высокапрадукцыйных сістэм кіравання версіямі, якая прадстаўляе гнуткія сродкі нелінейнай распрацоўкі, якія базуюцца на адгалінаванні і зліцці галінак. Для забеспячэння цэласнасці гісторыі і ўстойлівасці да змен «заднім лікам» выкарыстоўваюцца няяўнае хэшаванне ўсёй папярэдняй гісторыі ў кожным коміце, таксама магчыма пасведчанне лічбавымі подпісамі распрацоўшчыкаў асобных тэгаў і коммітаў.

У параўнанні з мінулым выпускам у новую версію прынята 717 змен, падрыхтаваныя пры ўдзеле 96 распрацоўшчыкамі, з якіх 26 упершыню прынялі ўдзел у распрацоўцы. Асноўныя навіны:

  • У каманды "git log" і "git show" дададзена опцыя "-remerge-diff", якая дазваляе паказаць адрозненні паміж агульным вынікам зліцця і фактычнымі дадзенымі, адлюстраванымі ў коміце пасля апрацоўкі каманды "merge", што дазваляе наглядна ацаніць змены, выкананыя ў выніку дазволу канфліктаў пры зліцці. Звычайная каманда "git show" падзяляе розныя дазволы канфліктаў водступам, што абцяжарвае разуменне змен. Напрыклад, на скрыншоце ніжэй радка «+/-» без водступу паказвае апошні дазвол канфлікту, звязанае з перайменаваннем у першай галінцы sha1 на oid у каментары, а «+/-» з водступам — пачатковы дазвол канфлікту, выкліканае з'яўленнем у другой галінцы дадатковага аргументу у функцыі dwim_ref().
    Выпуск сістэмы кіравання зыходнымі тэкстамі Git 2.36

    Пры выкарыстанні опцыі «remerge-diff» адрозненні паміж дазволамі канфліктаў не падзяляюцца для кожнай бацькоўскай галіны, а паказваюцца агульныя адрозненні паміж файлам, якія маюць канфлікты зліцця, і файлам, у якім канфлікты вырашаныя.

    Выпуск сістэмы кіравання зыходнымі тэкстамі Git 2.36

  • Падвышаная гнуткасць налады паводзін па скідзе дыскавых кэшаў праз выклік функцыі fsync(). Раней даступны параметр core.fsyncObjectFiles падзелены на дзве зменныя канфігурацыі core.fsync і core.fsyncMethod, якія прадстаўляюць магчымасць ужываць fsync, не толькі да файлаў з аб'ектамі (.git/objects), але і да іншых структур git, такім як спасылкі (.git /refs), reflog і pack-файлы.

    Праз зменную core.fsync можна паказаць спіс унутраных структур Git, пасля аперацыі запісу для якіх дадаткова будзе выклікацца fsync. Пераменная core.fsyncMethod дазваляе абраць метад для скіду кэша, напрыклад, можна абраць fsync для ўжывання аднайменнага сістэмнага выкліку ці паказаць writeout-only для ўжывання адкладзенага запісу (pagecache writeback).

  • Для абароны ад уразлівасцяў, якія маніпулююць падстаноўкай іншымі карыстальнікамі каталогаў .git у сумесна выкарыстоўваюцца раздзелы, узмоцнена праверка ўладальніка рэпазітара. Выкананне любых каманд git зараз дапушчаецца толькі ў сваіх каталогах ".git". Калі каталог з рэпазітаром прыналежыць іншаму карыстачу, то па змаўчанні будзе выведзена памылка. Указаныя паводзіны можна адключыць пры дапамозе налады safe.directory.
  • У каманду "git cat-file", прызначаную для вываду зыходнага змесціва Git-аб'ектаў, дададзена опцыя "-batch-command", якая дапаўняе раней даступныя каманды "-batch" і "-batch-check" магчымасцю адаптыўнага выбару тыпу высновы праз указанне " contents <аб'ект>» для вываду змесціва або «info <аб'ект>» для вываду інфармацыя аб аб'екце. Дадаткова падтрымліваецца каманда "flush" для скіду буфера высновы.
  • У каманду "git ls-tree", прызначаную для фармавання спісу змесціва дрэва аб'ектаў, дададзеная опцыя "-oid-only" ("-object-only"), па аналогіі з "-name-only" якая выводзіць толькі ідэнтыфікатары аб'ектаў для спрашчэння выкліку са скрыптоў. Таксама рэалізавана опцыя «-format» якая дазваляе вызначыць уласны фармат высновы, камбінуючы інфармацыю аб рэжыме, тыпе, імені і памеры.
  • У камандзе "git bisect run" рэалізавана азначэнне невыстаўлення для скрыпту прыкметы выкананага файла і высновы ў гэтым выпадку памылак з кодамі 126 ці 127 (раней, калі скрыпт немагчыма было запусціць усе рэвізіі пазначаліся як мелыя праблемы).
  • У каманду "git fetch" дададзена опцыя "-refetch" для вымання ўсіх аб'ектаў без інфармавання іншага боку аб змесцівам, ужо наяўным на лакальнай сістэме. Падобныя паводзіны могуць быць карыснымі для аднаўлення стану пасля збояў, калі няма ўпэўненасці ў цэласнасці лакальных дадзеных.
  • У каманды "git update-index", "git checkout-index", "git read-tree" і "git clean" дададзена падтрымка частковых індэксаў (sparse index), якія дазваляюць павысіць прадукцыйнасць і зэканоміць месца ў рэпазітарах, у якіх выконваюцца аперацыі частковага кланавання (sparse-checkout).
  • Змененыя паводзіны каманды «git clone — filter=… —recurse-submodules», якая зараз прыводзіць да частковага кланавання субмодуляў (раней пры выкананні падобных каманд фільтр ужываўся толькі да асноўнага змесціва, а субмодулі кланаваліся цалкам без уліку фільтра).
  • У камандзе "git bundle" дададзеная падтрымка ўказання фільтраў для выбарачнага памяшкання змесціва па аналогіі з аперацыямі частковага кланавання.
  • У каманду "git branch" дададзена опцыя "-recurse-submodules" для рэкурсіўнага абыходу субмодуляў.
  • У userdiff прапанаваны новы апрацоўшчык для мовы Kotlin.

Крыніца: opennet.ru

Дадаць каментар