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

Алдыңғы шығарылыммен салыстырғанда, жаңа нұсқада 100 әзірлеушінің қатысуымен дайындалған 505 өзгеріс бар, олардың 33-і Git әзірлеуінде жаңадан болды.

Негізгі инновациялар (github.blog, gitlab.com/blog, gitlab.com/git-scm):

  • Әдепкі бойынша енгізілген Rust компоненттерін қолдау. rustc компиляторы. қосылды құрастыру тәуелділіктеріне. Rustсіз құрастыру үшін, make утилитасын іске қосқан кезде NO_RUST=1 жалаушасын немесе meson configure іске қосқан кезде -Drust=disabled жалаушасын пайдалануға болады. Rust көмегімен құрастыруды өшіру мүмкіндігі Git 3.0 нұсқасына дейін қолдау көрсетіледі, онда Rust болады. қосылды Қажетті тәуелділіктердің қатарында. Rust тілі SHA-1 және SHA-256 хэш конфигурациялары арасындағы портативтілік қабатын, сондай-ақ айнымалы ұзындықтағы бүтін сандарды кодтау және декодтау сияқты кейбір ішкі функцияларды жүзеге асырады. Болашақта Rust тілінде маңыздырақ ішкі Git компоненттері қайта жазылады деп күтілуде.
  • Тәжірибелік топқа «git тарихы""git history fixup" операциясы commit history rewriting құралына қосылды, ол commit тарихын қайта жазу мүмкіндігін береді. Fixup операциясы git add арқылы қосылған өзгерістерді алдыңғы commit-ке жылжытуға және git commit --fixup= командасын орындау сияқты барлық кейінгі commit-терді автоматты түрде қайта жазуға мүмкіндік береді. және git rebase --autosquash командасын орындау ~.
  • Платформа үшін Linux фондық процесс енгізілді fsmonitor, ол файл жүйесіндегі өзгерістерді механизмді пайдаланып бақылайды хабарлау және 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, нысан:түрі= , сирек: және біріктіру:. Сынақ кезінде --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 және айна серверлерінен тұратын жариялау тобын жасауға болады:

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

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

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

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

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

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