Git 2.55 нұсқасы әдепкі бойынша Rust қолдауы қосылған күйде шығарылады

Таратылған бастапқы кодты басқару жүйесінің Git 2.55 нұсқасы жарияланды. Негізгі өзгерістерге мыналар кіреді: әдепкі бойынша Rust құрастырмаларын қосу, іске асыру Linux fsmonitor процесі, инкрементальды MIDX индексін қайта орау үшін жаңа стратегия, коммитті түзетуге арналған "git history fixup" командасы, нысанның қолжетімділігінің битмап генерациясын оңтайландыру, параллель ілмектерді орындауды қолдау және "git format-rev" командасы. Git GPLv2+ лицензиясы бойынша лицензияланған.

Алдыңғы шығарылыммен салыстырғанда, жаңа нұсқада 100 әзірлеушінің көмегімен дайындалған 505 өзгерту бар, олардың 33-і Git әзірлеуінде жаңадан болды. Негізгі жаңа мүмкіндіктер (1, 2, 3):

  • Rust тілінің компонентін қолдау әдепкі бойынша қосылған. rustc компиляторы
    Rust құрастыру тәуелділіктеріне қосылды. Rust-сыз құрастыру үшін make утилитасын іске қосқан кезде "NO_RUST=1" жалаушасын немесе "meson configure" іске қосқан кезде "-Drust=disabled" жалаушасын пайдалануға болады. Rust көмегімен құрастыруды өшіру мүмкіндігі Git 3.0 нұсқасына дейін қолдау көрсетіледі, оған Rust міндетті тәуелділік ретінде кіреді. Rust SHA-1 және SHA-256 хэш конфигурациялары арасындағы тасымалдану қабатын, сондай-ақ айнымалы ұзындықтағы бүтін сандарды кодтау және декодтау сияқты кейбір ішкі функцияларды жүзеге асырады. Болашақта Rust-та маңызды Git ішкі функциялары қайта жазылады деп күтілуде.
  • Өзгерістер тарихын қайта жазу мүмкіндігін беретін эксперименттік "git history" командасы коммитті түзетуге арналған "git history fixup" операциясымен жаңартылды. "fixup" операциясы "git add" арқылы қосылған өзгерістерді бұрынғы коммитке жылжытуға және "git commit --fixup=" командасын орындау сияқты барлық кейінгі коммиттерді автоматты түрде қайта жазуға мүмкіндік береді. «және «git rebase --autosquash» іске қосылды ~».
  • Платформа үшін Linux fsmonitor фондық процесі енгізілді, ол inotify механизмін пайдаланып файлдық жүйедегі өзгерістерді бақылайды және "git status" сияқты командаларды орындаған кезде бүкіл жұмыс каталогын аралап өтуден аулақ болуға мүмкіндік береді. Оны "core.fsmonitor" параметрі арқылы қосуға болады.
  • "git repack" командасы "--write-midx=incremental" опциясымен жаңартылды. Бұл опция инкрементальды MIDX индексінде (көп пакетті индекс) метадеректерді жаңартудың жаңа стратегиясын жүзеге асырады, бұл бүкіл индексті қайта орау қажеттілігін жояды. Инкрементальды көп пакетті индекс нысандардың бума файлдары бойынша таралуы туралы ақпаратты қамтитын бір үлкен индекстің орнына қабаттарды пайдаланады. Әрбір қабат белгілі бір бума файлдарын қамтиды және бөлек растрлық файлда сақталады. Бұл құрылым жаңа бума файлдарындағы нысандар туралы деректерді индекске қосуға мүмкіндік береді, жаңа қабаттарды индекске бар қабаттарды қайта құрмай бекітеді.

    "git repack --write-midx=incremental" командасы жақында жасалған бума файлдарын қамтитын инкрементальды MIDX индексіне жаңа қабат қосады. "--geometric" репозиторий бумалау режимімен біріктірілгенде, жаңа команда бірнеше бума файлдарынан жаңа нысандарды бір үлкен бума файлына біріктіруге және қажет болған жағдайда инкрементальды MIDX индексінің бірнеше көршілес қабаттарын бумалауға және біріктіруге мүмкіндік береді. Бұл стратегия "git repack"-ке ескі, үлкен қабаттарды өзгеріссіз қалдырып, тек жоғарғы қабаттарды қайта жазуға мүмкіндік береді. Сондай-ақ, қабаттардың жалпы санын нысандардың жалпы санының логарифміне пропорционалды түрде сақтау арқылы қабат тізбегінің бақылаусыз өсуіне жол бермейді.

  • Нысанның қолжетімділігінің растрлық суреттерін генерациялау қажетсіз рекурсияны, нысан позицияларын кэштеуді, растрлық суреттерді XOR операциясымен біріктірмес бұрын сұрыптауды және жалған біріктіру растрлық суреттерін жасау кодын қайта өңдеуді болдырмайтын жаңа нысан ағашын шарлау алгоритмі арқылы айтарлықтай оңтайландырылды. Тест репозиторийінде бұл оңтайландырулар растрлық суретті генерациялау уақытын 612 секундтан 294 секундқа дейін қысқартты.
  • Тәуелсіз ілмектерді параллель орындау енді конфигурация файлдарында мүмкін. Ортақ күйге әсер ететін немесе ескеретін ілмектерді, мысалы, коммит жазбаларын өзгертетін немесе индекстерді және жұмыс ағашын тексеретін ілмектерді параллель іске қосу мүмкін емес. Дегенмен, линтер тексеру және бірліктерді тестілеу үшін ілмектерді параллель іске қосуға болады. Параллель орындауға мүмкіндік беретін ілмектер "hook.hook_name.parallel = true" параметрін пайдаланып конфигурацияланады. Бір уақытта іске қосылатын тапсырмалар саны hook.jobs, ілмек параметрімен анықталады. .jobs немесе "-j" пәрмен жолы опциясы.
  • "git pack-objects --path-walk" командасы енді "blob:none", "blob:limit=" сияқты сүзгілерді көрсетуге мүмкіндік береді. ", "ағаш:0", "нысан:түрі= », «сирек: " және "combine:". Сынақ кезінде "--path-walk" командасын орындау кезінде дақтарды жою жасалған бума файлының өлшемін 16%-ға азайтты.
  • Коммит тізімдерінде аталған немесе кез келген мәтінде кездесетін түзетулер мен нысан атауларын пішімдеу үшін "git format-rev" командасы қосылды (мысалы, мұны коммит жазбаларын өңдеуге арналған ілмектерде пайдалануға болады).

    git соңғы өзгертілген | git format-rev --stdin-mode=text --format=%an

    Junio ​​C Hamano builtin/commit.c

  • Ақпараттық хабарламалар мен жіберілген қате мәтіндеріндегі терминалды басқару тізбектерінің көпшілігінен қашу әдепкі бойынша қосылған. серверЗиянды бағдарламаларға қол жеткізген кезде сервер Мұндай қашу тізбектерін шығысты жасыру немесе өзгерту үшін пайдалануға болады, мысалы, курсорды жылжыту және мәтінді тазарту үшін қашу тізбектері арқылы. Элементтерді ерекшелеу үшін қашу тізбектерін қолдау сақталды.
  • git checkout -m командасы енді қайшылықты дереу шешуді талап етпей, қойма аймағына қарама-қайшы жергілікті өзгерістерді автоматты түрде сақтайды.
  • Енді "git push" командасы бір командамен тармақты бірнеше сыртқы Git серверлеріне жіберуге мүмкіндік береді. Мысалы, негізгі тармақты тек негізгі серверге ғана емес, сонымен қатар айнаға жіберу үшін сіз "жариялау" тобын жасай аласыз серверлер «github», «gitlab» және «mirror»:

    git config қашықтан басқару пульттары.publish "github gitlab mirror"
    git push push main

  • «git log --graph» командасында енді «--graph-lane-limit=" опциясы бар. » бұтақтарды визуализациялау кезінде тік жолақтар санын шектеу үшін, бұл сізге көп бұтақтары бар репозиторийлерде коммит деректері үшін экранда орын қалдыруға мүмкіндік береді.

    ...
    * | | | | 619931f561 'dl/posix-unused-warning-clang' тармағын біріктіру
    |\ \ \ \ \
    | * | | | ~ cf48887610 compat/posix.h: GIT_GNUC_PREREQ() салыстыруын жеңілдету
    | * | | | ~ ffd45926dc compat/posix.h: GIT_GNUC_PREREQ() және UNISED файлдарын тазалау
    |\ \ \ \ \~
    | * | | | ~3f5203eeb4 ls-файлдары: lstat алдындағы жол сипаттамаларын сүзгілеу

  • «git log» және «git rev-list» командаларында енді «--max-count-oldest=" опциясы бар. , бұл сізге диапазондағы ең ескі N коммитті таңдауға мүмкіндік береді.

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

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster