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

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

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

  • Пашыраны магчымасці па выкарыстанні SSH-ключоў для запэўнення Git-аб'ектаў лічбавым подпісам. Для размежавання часу дзеяння некалькіх ключоў дададзена падтрымка OpenSSH-дырэктыў "valid-before" і "valid-after", пры дапамозе якіх можна забяспечыць карэктную працу з подпісамі пасля ратацыі ключа аднаго з распрацоўшчыкаў. Да гэтага, узнікала праблема з падзелам подпісаў старым і новым ключом - калі выдаліць стары ключ, то немагчыма будзе праверыць зробленыя з яго дапамогай подпісы, а калі пакінуць - то захаваецца магчымасць стварэння новых подпісаў старым ключом, на змену якому ўжо прыйшоў іншы ключ. Пры дапамозе valid-before і valid-after можна падзяліць вобласць дзеяння ключоў на аснове часу стварэння подпісу.
  • У наладзе merge.conflictStyle, якая дазваляе абраць рэжым афармлення інфармацыі аб канфліктах пры зліцці, з'явілася падтрымка рэжыму «zdiff3», які перамяшчае за межы вобласці канфлікту ўсе тыпавыя радкі, паказаныя ў пачатку ці канцы канфлікту, што дазваляе дамагчыся больш кампактнага падання інфармацыі.
  • У каманду "git stash" дададзены рэжым "-staged", які дазваляе схаваць толькі змены, дададзеныя ў індэкс, напрыклад у сітуацыі, калі неабходна часова адкласці частку складаных змен для таго, каб спачатку дадаць тое, што ўжо гатова, а з астатнім разабрацца. праз нейкі час. Рэжым нагадвае каманду "git commit", якая запісвае толькі змешчаныя ў індэкс змены, але замест стварэння новага комміта ў "git stash -staged" вынік захоўваецца ў часовую вобласць stash. Пасля таго, як змены спатрэбяцца іх можна вярнуць камандай "git stash pop".
  • У каманду "git log" дададзены новы спецыфікатар фармату "-format=%(describe)", які дазваляе сумясціць выснову "git log" з вынікам выканання каманды каманды "git describe". Параметры для git describe паказваюцца непасрэдна ўсярэдзіне спецыфікатара (format=%(describe:match= ,exclude= )»), у якім таксама можна ўключыць скарочаныя тэгі («—format=%(describe:tags= )») і наладзіць колькасць шаснаццатковых сімвалаў для ідэнтыфікацыі аб'ектаў («—format=%(describe:abbrev= )»). Напрыклад, для вываду 8 апошніх коммітаў, тэгі якіх не маюць пазнакі кандыдата ў рэлізы, і ўказанні 8-знакавых ідэнтыфікатараў можна выкарыстоўваць каманду: $ git log -8 —format='%(describe:exclude=*-rc*,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d 94bbc056f2.34.1 v642-56-gffb95f8d v7-2.34.1- gdf203c9adeb2980902 v2.34.1-640-g3b41a212
  • У наладзе user.signingKey рэалізаваная падтрымка новых тыпаў ключоў, якія не абмяжоўваюцца тыпам «ssh-» і ўказаннем поўнага файлавага шляху да ключа. Альтэрнатыўныя тыпы задаюцца пры дапамозе прэфікса "key::", напрыклад, "key::ecdsa-sha2-nistp256" для ключоў ECDSA.
  • Прыкметна падвышаная хуткасць генерацыі спісу змен у рэжыме "histogram", а таксама пры выкарыстанні опцыі "color-moved-ws", якая кіруе падсвятленнем прабелаў у каляровым diff-е.
  • У камандзе "git jump", якая прымяняецца для прадастаўлення Vim інфармацыі аб дакладных пераходах на шуканую пазіцыю ў файле пры разборы канфліктаў зліцця, праглядзе адрозненняў або выкананні аперацыі пошуку, прадастаўлена магчымасць звужэння ахоплівае канфліктаў зліцця. Напрыклад, для абмежавання аперацый толькі каталогам "foo" можна паказаць "git jump merge - foo", а для выключэння з апрацоўкі каталога "Documentation" - "git jump merge - ':^Documentation'"
  • Праведзена праца па стандартызацыі ўжывання тыпу "size_t" замест "unsigned long" для значэнняў, уяўлялых памер аб'ектаў, што дазволіла дамагчыся магчымасці ўжывання фільтраў "clean" і "smudge" з файламі памерам больш 4 ГБ на ўсіх платформах, уключаючы платформы з мадэллю дадзеных LLP64 , тып "unsigned long" у якой абмежаваны 4 байтамі.
  • У каманду "git am" дададзена опцыя "—empty=(stop|drop|keep)", якая дазваляе пры разборы патчаў з паштовай скрыні абраць паводзіны для пустых лістоў, якія не змяшчаюць патчаў. Значэнне "stop" прывядзе да завяршэння ўсёй аперацыі прымянення патчаў, "drop" - прапусціць пусты патч, "keep" - створыць пусты коміт.
  • У каманды "git reset", "git diff", "git blame", "git fetch", "git pull" і "git ls-files" дададзена падтрымка частковых індэксаў (sparse index), якія дазваляюць павысіць прадукцыйнасць і зэканоміць месца ў рэпазітарах , у якіх выконваюцца аперацыі частковага кланавання (sparse-checkout).
  • Абвешчаная састарэлай каманда "git sparse-checkout init", замест якой варта выкарыстоўваць "git sparse-checkout set".
  • Дададзена пачатковая рэалізацыя новага бэкенда «reftable» для захоўвання спасылак, такіх як галінкі і тэгі, у рэпазітары. Новы бэкэнд выкарыстоўвае блокавае сховішча, якое ўжываецца праектам JGit і аптымізаванае для захоўвання вельмі вялікай колькасці спасылак. Бэкенд пакуль не інтэграваны з сістэмай спасылак (refs) і не гатовы для практычнага прымянення.
  • Каляровая палітра каманды "git grep" прыведзена да адпаведнасці ўтыліце GNU grep.

Крыніца: opennet.ru

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