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» механизмінің мүмкіндіктері кеңейтілді. Қолжетімсіз нысандарды қоқыс жинаушы жояды, бірақ жарыс жағдайларын болдырмау үшін олар жойылмас бұрын белгілі бір уақыт репозиторийде қалады. «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%-ы ғана push операциясымен қамтылған, жүргізілген оңтайландырулар тексеру уақытын 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 өңдеушісі әдепкі бойынша өшірілген.

Ақпарат көзі: opennet.ru

пікір қалдыру