Git 2.26 таратылған көзді басқару жүйесінің шығарылымы

Қол жетімді бөлінген көзді басқару жүйесін шығару Git 2.26.0. Git – ең танымал, сенімді және өнімділігі жоғары нұсқаларды басқару жүйелерінің бірі, тармақталу мен біріктіруге негізделген икемді сызықты емес әзірлеу құралдарын қамтамасыз етеді. Тарихтың тұтастығын және ретроактивті өзгерістерге қарсы тұруды қамтамасыз ету үшін әрбір міндеттемеде бүкіл алдыңғы тарихтың жасырын хэшингі қолданылады, сонымен қатар әзірлеушілердің цифрлық қолтаңбаларымен жеке тегтер мен міндеттемелерді куәландыруға болады.

Алдыңғы шығарылыммен салыстырғанда 504 әзірлеушінің қатысуымен дайындалған жаңа нұсқаға 64 өзгерту енгізілді, оның 12-і әзірлеуге алғаш рет қатысты. басты инновациялар:

  • Әдепкіге ауыстырылды екінші нұсқасы Клиент Git серверіне қашықтан қосылғанда қолданылатын Git байланыс протоколы. Хаттаманың екінші нұсқасы клиентке сілтемелердің қысқартылған тізімін қайтаратын сервер жағында тармақтар мен тегтерді сүзу мүмкіндігін қамтамасыз етумен ерекшеленеді. Бұрын кез келген тарту пәрмені клиентке тек бір филиалды ғана жаңартып жатқанда немесе репозиторий көшірмесінің жаңартылғанын тексергенде де, клиентке барлық репозиторийдегі сілтемелердің толық тізімін жіберетін. Тағы бір назар аударарлық жаңалық - құралдар жинағында жаңа функционалдылық қолжетімді болған сайын хаттамаға жаңа мүмкіндіктерді қосу мүмкіндігі. Клиент коды ескі протоколмен үйлесімді болып қалады және жаңа және ескі серверлермен жұмыс істеуді жалғастыра алады, егер сервер екіншісіне қолдау көрсетпесе, автоматты түрде бірінші нұсқаға оралады.
  • «git config» пәрменіне «-show-scope» опциясы қосылды, бұл белгілі бір параметрлер анықталған орынды анықтауды жеңілдетеді. Git әртүрлі орындарда параметрлерді анықтауға мүмкіндік береді: репозиторийде (.git/info/config), пайдаланушы каталогында (~/.gitconfig), жүйелік конфигурация файлында (/etc/gitconfig) және пәрмен арқылы жол опциялары және орта айнымалылары. «git config» орындаған кезде қажетті параметрдің нақты қай жерде анықталғанын түсіну өте қиын. Бұл мәселені шешу үшін «--show-origin» опциясы қол жетімді болды, бірақ ол параметр анықталған файлға жолды ғана көрсетеді, бұл файлды өңдеуді жоспарласаңыз пайдалы, бірақ «--жүйе», «--global» немесе «-local» опцияларын пайдаланып «git config» арқылы мәнді өзгерту қажет. Жаңа опция "--show-scope" айнымалы анықтамасының контекстін көрсетеді және оны -show-originмен бірге пайдалануға болады:

    $ git --list --scope-scope --show-origin
    жаһандық файл:/home/user/.gitconfig diff.interhunkcontext=1
    жаһандық файл:/home/user/.gitconfig push.default=current
    […] жергілікті файл:.git/config branch.master.remote=origin
    жергілікті файл:.git/config branch.master.merge=refs/heads/master

    $git config --show-scope --get-regexp 'айырма.*'
    жаһандық diff.statgraphwidth 35
    жергілікті айырмашылық.түсті жылжымалы жазық

    $git config --global --unset diff.statgraphwidth

  • Байланыстыру параметрлерінде куәлік URL мекенжайларында маскаларды пайдалануға рұқсат етіледі. Git ішіндегі кез келген HTTP параметрлері мен тіркелгі деректерін барлық қосылымдар (http.extraHeader, credential.helper) және URL негізіндегі қосылымдар үшін де орнатуға болады (credential.https://example.com.helper, credential.https: //мысал. com.helper). Осы уақытқа дейін *.example.com сияқты қойылмалы таңбалар HTTP параметрлері үшін ғана рұқсат етілген, бірақ тіркелгі деректерін байланыстыру үшін қолдау көрсетілмеді. Git 2.26 нұсқасында бұл айырмашылықтар жойылды және, мысалы, пайдаланушы атын барлық ішкі домендерге байланыстыру үшін енді мыналарды көрсетуге болады:

    [тіркелгі деректері "https://*.example.com"]

    пайдаланушы аты = ttaylorr

  • Деректердің бір бөлігін ғана тасымалдауға және репозиторийдің толық емес көшірмесімен жұмыс істеуге мүмкіндік беретін ішінара клондау (жартылай клондар) бойынша эксперименттік қолдауды кеңейту жалғасуда. Жаңа шығарылым «git sparse-checkout add» жаңа пәрменін қосады, ол барлық каталогтарды бірден «git» пәрмені арқылы тізімдеудің орнына «тексеру» операциясын жұмыс ағашының бір бөлігіне ғана қолдану үшін жеке каталогтарды қосуға мүмкіндік береді. sparse-checkout set» (бүкіл тізімді әр уақытта қайта көрсетпей, бір-бір каталогты қосуға болады).
    Мысалы, git/git репозиторийін блоктарды жасамай, тексеруді тек жұмыс көшірмесінің түбірлік каталогымен шектемей және «t» және «Құжаттама» каталогтары үшін бөлек тексеруді белгілемей клондау үшін мыналарды көрсетуге болады:

    $ git clone --filter=blob:none --sparse [электрондық пошта қорғалған]:git/git.git

    $ cd git
    $git sparse-checkout init --cone

    $ git sparse-checkout қосу t
    ....
    $ git sparse-checkout Документацияны қосу
    ....
    $ git сирек тексеру тізімі
    Құжаттама
    t

  • Репозиторийдің ағымдағы мазмұнын және тарихи түзетулерді іздеу үшін пайдаланылатын «git grep» пәрменінің өнімділігі айтарлықтай жақсарды. Іздеуді жылдамдату үшін бірнеше ағындар («git grep –threads») арқылы жұмыс ағашының мазмұнын сканерлеуге болады, бірақ тарихи түзетулердегі іздеу бір ағынды болды. Енді бұл шектеу оқу әрекеттерін нысан қоймасынан параллельдеу мүмкіндігін енгізу арқылы жойылды. Әдепкі бойынша, ағындар саны CPU ядроларының санына тең етіп орнатылады, бұл көп жағдайда қазір «-threads» опциясын нақты орнатуды қажет етпейді.
  • Репозиторийдің бірнеше жұмыс көшірмелерімен жұмыс істеуге мүмкіндік беретін ішкі командаларды, жолдарды, сілтемелерді және «git worktree» пәрменінің басқа аргументтерін енгізуді автотолтыруға қолдау қосылды.
  • ANSI қашу реттілігі бар ашық түстерге қолдау қосылды. Мысалы, «git config –color» немесе «git diff –color-moved» бөлектеу түстерінің параметрлерінде ашық көк үшін «--format» опциясы арқылы «%C(brightblue)» параметрін көрсетуге болады.
  • Сценарийдің жаңа нұсқасы қосылды фсмонитор-күзетші, механизммен интеграцияны қамтамасыз ету Facebook Watchman файл өзгерістерін және жаңа файлдардың пайда болуын қадағалауды жылдамдату. Жаңартқаннан кейін git қажет ауыстырыңыз репозиторийге ілмек.
  • Растрларды пайдалану кезінде ішінара клондарды жылдамдату үшін оңтайландырулар қосылды
    шығысты сүзу кезінде барлық нысандарды толық іздеуді болдырмау үшін (разрядтық машина). Ішінара клондау кезінде блобтарды тексеру (—сүзгі=блоб:жоқ және —сүзгі=блоб:лимит=n) енді орындалады
    айтарлықтай жылдамырақ. GitHub осы оңтайландырулар мен ішінара клондауға арналған эксперименттік қолдауы бар патчтарды жариялады.

  • «git rebase» пәрмені «патч+қолдану» орнына әдепкі «біріктіру» механизмін (бұрын «rebase -i» үшін пайдаланылған) пайдаланып, басқа серверге жылжытылды. Бактериялар кейбір кішігірім жолдармен ерекшеленеді, мысалы, қақтығысты шешкеннен кейін операцияны жалғастырғаннан кейін (git rebase --continue), жаңа сервер міндеттеме хабарын өңдеуді ұсынады, ал ескісі жай ғана ескі хабарды пайдаланды. Ескі әрекетке оралу үшін "--apply" опциясын пайдалануға немесе "rebase.backend" конфигурациясының айнымалы мәнін "қолдану" етіп орнатуға болады.
  • .netrc арқылы көрсетілген аутентификация параметрлеріне арналған өңдегіштің мысалы қораптан тыс пайдалануға жарамды пішінге дейін қысқартылды.
  • Сандық қолтаңбаны тексеруді жүзеге асыратын әртүрлі элементтер үшін ең төменгі сенім деңгейін орнату үшін gpg.minTrustLevel параметрі қосылды.
  • «git rm» және «git stash» үшін «--pathspec-from-file» опциясы қосылды.
  • Сынақ жиынтықтарын жетілдіру SHA-2 орнына SHA-1 хэштеу алгоритміне көшуге дайындық кезінде жалғасты.

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

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