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

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

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

  • Өзгөртүүлөрдүн тарыхынын статистикасы менен корутундуларды көрсөтүү үчүн арналган "git shortlog" буйругу автор же аткаруучу менен чектелбеген талаалар боюнча милдеттенмелерди ээн-эркин топтоого "-group" опциясын кошту. Мисалы, "Биргелешип авторлогон" талаасында айтылган жардамчыларды эске алуу менен өзгөртүүлөрдүн саны тууралуу маалымат менен иштеп чыгуучулардын тизмесин көрсөтүү үчүн, сиз төмөнкү буйрукту колдонсоңуз болот: git shortlog -ns --group=author - -группа = трейлер: авторлош

    Shortlog чыгарууну форматтоо спецификаторлорунун жардамы менен бириктирсе болот, ал эми “--group” опциясы татаал отчетторду түзүүнү кыйла жөнөкөйлөтүп, кошумча сорттоо буйруктарынын зарылдыгын жокко чыгарат. Мисалы, ар бир айда берилген релиз үчүн канча милдеттенме кабыл алынганы тууралуу маалымат менен отчет түзүү үчүн, сиз төмөнкүлөрдү белгилесеңиз болот: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Буга чейин окшош операцияны аткаруу үчүн сорт жана уникалдуу утилиталарды колдонуу керек болчу: git log v2.38.0. .. —date='format:%Y -%m' —format='%cd' | сорт | uniq -c

  • Репозиторийде шилтеме кылынбаган (бутактар ​​же тегдер менен шилтеме кылынбаган) жетүүгө мүмкүн болбогон объекттерди таңгактоо үчүн иштелип чыккан "круф пакеттери" механизминин мүмкүнчүлүктөрү кеңейтилген. Жеткиликсиз объекттер таштанды жыйноочу тарабынан жок кылынат, бирок жарыш шарттарын болтурбоо үчүн алар жок кылынганга чейин белгилүү бир убакытка репозиторийде калат. "Cruft packs" механизми бардык жеткиликсиз объекттерди бир пачка файлында сактоого жана ар бир объекттин өзгөртүү убактысы жөнүндө маалыматтарды ".mtimes" кеңейтүүсү менен өзүнчө файлда сакталган өзүнчө таблицада көрсөтүүгө мүмкүндүк берет. жалпы өзгөртүү убактысы менен дал келбейт.

    Жетишсиз объекттердин репозиторийде алар чындыгында жок кылынганга чейин кала турган убактысы “--prune=” опциясы менен аныкталат. Бирок, жок кылуунун алдында кечиктирүү расалык шарттарга байланыштуу репозиторийдеги коррупцияны алдын алуунун кыйла натыйжалуу жана практикалык жолу болуп саналат, бирок ал 100% ишенимдүү эмес. Бузулган репозиторийди калыбына келтирүүнү жеңилдетүү үчүн жаңы релиз "git repack" буйругуна "--expire-to" опциясын кошуу менен жетишпеген объекттерди сактоо мүмкүнчүлүгүн берет, бул тышкы репозиторийди түзүү үчүн файлды көрсөтүүгө мүмкүндүк берет. бардык өчүрүлгөн объекттердин көчүрмөсү. Мисалы, backup.git файлында акыркы 5 мүнөт ичинде өзгөрүлбөгөн жеткиликсиз объекттерди сактоо үчүн төмөнкү буйрукту колдонсоңуз болот: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Жарым-жартылай клондоштуруу (сейрек-текшерүү) колдонулган жана жарым-жартылай индекстери бар (сейрек индекс) аймактарды издөөдө "git grep -cached" операциясынын ылдамдыгы кыйла жогорулады (70%ке чейин). Мурда, "-кэштелген" опцияны көрсөтүүдө, издөө адегенде кадимки индексте, андан кийин жарым-жартылайда жүргүзүлүп, бул чоң репозиторийлерде издөөдө байкаларлык кечигүүлөргө алып келген.
  • "git push" операциясы учурунда репозиторийге жайгаштырылгандан мурун жаңы объекттердин когеренттүүлүгүн сервердин текшерүүсү тездетилди. Текшерүүдө жарыяланган шилтемелерди гана эсепке алууга өтүү менен, 7 миллион шилтемеси бар тесттик репозиторийде, анын 3% гана түртүү операциясы камтылган, киргизилген оптималдаштыруу текшерүү убактысын 4.5 эсеге кыскартууга мүмкүндүк берди.
  • Коддогу мүмкүн болгон бүтүн сандардын ашып кетишинен коргоо үчүн "git apply" буйругу иштетилүүчү тактардын максималдуу өлчөмүн чектейт. Эгерде патчтын көлөмү 1 ГБ ашса, ката азыр көрсөтүлөт.
  • Потенциалдуу алсыздыктардан коргоо үчүн h2h3 модулун GIT_TRACE_CURL=1 же GIT_CURL_VERBOSE=1 опциясы менен HTTP/2 менен бирге колдонууда топтолгон аталыштардагы керексиз маалыматты тазалоо үчүн өзгөртүүлөр киргизилди.
  • Башка бутакка символдук шилтеме болгон бутакты текшерүүдө "git symbolic-ref HEAD" буйругу эми символдук шилтеменин атын эмес, максаттуу бутактын атын көрсөтөт.
  • Мурунку бутактын сыпаттамасын түзөтүү үчүн “--edit-description” (“git branch —edit-description @{-1}”) параметрине @{-1} аргументи үчүн колдоо кошулду.
  • Стандарттык киргизүү аркылуу опциялардын тизмесин өткөрүү үчүн "git merge-tree --stdin" буйругу кошулду.
  • Тармактык файл системаларында файл тутумундагы өзгөрүүлөрдү көзөмөлдөгөн fsmonitor иштетүүчү демейки боюнча өчүрүлгөн.

Source: opennet.ru

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