Git 2.37 булакты башкаруу релиз

Git 2.37 бөлүштүрүлгөн булакты башкаруу тутумунун чыгарылышы жарыяланды. Git эң популярдуу, ишенимдүү жана жогорку өндүрүмдүү версияларды башкаруу тутумдарынын бири, тармакташуу жана бириктирүү боюнча ийкемдүү сызыктуу эмес өнүгүү куралдарын камсыз кылат. Тарыхтын бүтүндүгүн жана ретроактивдүү өзгөрүүлөргө каршылыгын камсыз кылуу үчүн ар бир милдеттенмеде мурунку тарыхтын имплициттүү хэштери колдонулат, ошондой эле иштеп чыгуучулардын санариптик колтамгалары менен жеке тегдерди жана милдеттенмелерди тастыктоого болот;

Мурунку релизге салыштырмалуу 395 иштеп чыгуучунун катышуусу менен даярдалган жаңы версияга 75 өзгөртүү кабыл алынган, анын ичинен 20сы биринчи жолу иштеп чыгууга катышкан. Негизги инновациялар:

  • Репозиторийдин бир бөлүгүн гана камтыган жарым-жартылай индекстердин механизми (сейрек индекс) кеңири колдонууга даярдалды. Жарым-жартылай индекстер жарым-жартылай клондоо (сейрек-текшерүү) операцияларын аткарган же репозиторийдин толук эмес көчүрмөсү менен иштеген репозиторийлерде иштөөнү жакшыртат жана мейкиндикти үнөмдөй алат. Жаңы релиз жарым-жартылай индекстерди git show, git sparse-checkout жана git stash буйруктарына интеграциялоону аяктайт. Жарым-жартылай индекстерди колдонуунун эң көрүнүктүү эффективдүүлүгү "git stash" буйругу менен байкалат, ал кээ бир учурларда аткаруу ылдамдыгы 80% га жогорулаган.
  • Репозиторийде шилтеме кылынбаган (бутактар ​​же тегдер менен шилтеме кылынбаган) жеткиликсиз объекттерди таңгактоо үчүн жаңы "cruft пакеттери" механизми ишке ашырылган. Жеткиликсиз объекттер таштанды жыйноочу тарабынан жок кылынат, бирок жарыш шарттарын болтурбоо үчүн алар жок кылынганга чейин белгилүү бир убакытка репозиторийде калат. Жеткиликсиз объекттердин пайда болуу мезгилине көз салуу үчүн аларга окшош объекттердин өзгөрүү убактысы менен тегдерди тиркөө керек, бул аларды бардык объекттердин жалпы өзгөрүү убактысы болгон бир пачка файлында сактоого мүмкүндүк бербейт. Мурда ар бир объектти өзүнчө файлга сактоо, али жок кылынууга жарамдуу болбогон көп сандагы жаңы, жеткиликсиз объекттер болгондо көйгөйлөргө алып келген. Сунушталган “cruft пакеттери” механизми бардык жеткиликсиз объекттерди бир пачка файлында сактоого жана “.mtimes” кеңейтүүсү менен файлда сакталган өзүнчө таблицада ар бир объекттин өзгөртүү убактысы жөнүндө маалыматтарды чагылдырууга мүмкүндүк берет.
  • Windows жана macOS үчүн файл тутумундагы өзгөрүүлөргө көз салуу үчүн орнотулган механизм бар, бул "git status" сыяктуу операцияларды аткарууда бүт жумушчу каталогду итерациялоодон качууга мүмкүндүк берет. Мурда өзгөрүүлөргө көз салуу үчүн, FSдеги өзгөрүүлөргө көз салуу үчүн тышкы утилиталар, мисалы, Watchman, илгичтер аркылуу туташтырылышы мүмкүн, бирок бул кошумча программаларды жана конфигурацияны орнотууну талап кылды. Эми көрсөтүлгөн функция камтылган жана "git config core.fsmonitor true" буйругу менен иштетилиши мүмкүн.
  • “git sparse-checkout” буйругунда “-cone” режимине альтернативаны колдоо, жарым-жартылай клондоштуруу үчүн шаблондорду аныктоо ыкмасы эскирген деп жарыяланды, бул репозиторийдин тиешелүү бөлүгүн аныктоодо мүмкүндүк берет. жарым-жартылай индекстерди оптималдаштыруу үчүн колдонууга жол бербеген ".gitignore" синтаксисин колдонуу менен айрым файлдарды тизмелөө үчүн клондоо операциясы.
  • Дисктеги өзгөрүүлөрдү тазалоо үчүн fsync() чакырыгын конфигурациялоодо ийкемдүүлүк жогорулады. "Core.fsyncMethod" параметрине "партиялык" синхрондоштуруу стратегиясын колдоо кошулду, бул бир fsync() тарабынан баштапкы абалга келтирилген кайра жазуу кэшинде өзгөрүүлөрдү топтоо аркылуу көп сандагы жеке файлдарды жазууда ишти тездетүүгө мүмкүндүк берет. чалуу. “git add” буйругунун жардамы менен 500 файл кошулган сыноо жаңы режим иштетилгенде 0.15 секундада бүттү, ал эми fsync() чалуу ар бир файл үчүн 1.88 секундду, ал эми fsync колдонбостон 0.06 секундду талап кылды.
  • "git log" жана "git rev-list" сыяктуу бутактарды өтүү буйруктарында эми "-since-as-filter=X" опциясы бар, ал "X" дан мурунку милдеттенмелер жөнүндө маалыматты чыпкалоого мүмкүндүк берет. “— бери” опциясынан айырмаланып, жаңы команда көрсөтүлгөн убакыттан өткөн биринчи тапшырмадан кийин издөөнү токтотпогон чыпка катары ишке ашырылат.
  • "Git remote" буйругунда "-v" желегин көрсөтүүдө репозиторийдин жарым-жартылай клондору жөнүндө маалымат көрсөтүлөт.
  • Кошулган "transfer.credentialsInUrl" жөндөөлөрү "эскертүү", "өлүү" жана "уруксат берүү" маанилерин ала алат. Параметрде көрсөтүлгөн болсо, «алыстан. .url" ачык текст эсептик дайындары, "алып келүү" же "түртүү" операциясын аткаруу аракети ката менен ишке ашпай калат, эгерде "transfer.credentialsInUrl" жөндөөсү "өлүү" деп коюлса, же "эскертүү" деп коюлса, эскертүү.
  • Демейки боюнча, Perlден Cге кайра жазылган “git add -i” буйругунун интерактивдүү режиминин жаңы ишке ашырылышы иштетилген.

Source: opennet.ru

Комментарий кошуу