Нашри системаи идоракунии сарчашмаҳои тақсимшудаи Git 2.26

Дастрас озод кардани системаи идоракунии сарчашмаҳои тақсимшуда git 2.26.0. Git яке аз маъмултарин, боэътимод ва сермахсули системаҳои идоракунии версия мебошад, ки абзорҳои тағйирпазири рушди ғайрихаттӣ дар асоси шохаҳо ва якҷоякунии шохаҳо мебошад. Барои таъмини якпорчагии таърих ва муқовимат ба тағйироти ретроактивӣ, хэшинги ғайримустақими тамоми таърихи қаблӣ дар ҳар як супорида истифода мешавад, инчунин метавон тегҳои инфиродӣ ва ӯҳдадориҳоро бо имзои рақамии таҳиягарон тафтиш кард.

Дар муқоиса бо нашри қаблӣ, версияи нав 504 тағиротро дар бар мегирад, ки бо иштироки 64 таҳиягар омода шудааст, ки 12 нафари онҳо бори аввал дар таҳия ширкат кардаанд. асосӣ навовариҳо:

  • Тарзи пешфарз ба иваз карда шуд версияи дуюм Протоколи алоқаи Git, ки ҳангоми пайваст кардани муштарӣ ба сервери Git истифода мешавад. Варианти дуюми протокол барои таъмини қобилияти филтр кардани шохаҳо ва тегҳо дар тарафи сервер, баргардонидани рӯйхати кӯтоҳшудаи истинодҳо ба муштарӣ назаррас аст. Пештар, ҳама гуна фармони кашидан ҳамеша ба муштарӣ рӯйхати пурраи истинодҳоро дар тамоми анбор мефиристод, ҳатто вақте ки муштарӣ танҳо як филиалро навсозӣ мекард ё тафтиш мекард, ки нусхаи анбори онҳо навсозӣ мешавад. Боз як навоварии назаррас ин қобилияти илова кардани қобилиятҳои нав ба протокол аст, зеро функсияҳои нав дар маҷмӯа дастрас мешаванд. Рамзи муштарӣ бо протоколи кӯҳна мувофиқ боқӣ мемонад ва метавонад корашро ҳам бо серверҳои нав ва ҳам кӯҳна идома диҳад ва ба таври худкор ба версияи аввал баргардад, агар сервер дуюмро дастгирӣ накунад.
  • Опсияи "-show-scope" ба фармони "git config" илова карда шудааст, ки муайян кардани ҷойеро, ки дар он танзимоти муайян муайян шудааст, осонтар мекунад. Git ба шумо имкон медиҳад, ки танзимотро дар ҷойҳои гуногун муайян кунед: дар анбор (.git/info/config), дар директорияи корбар (~/.gitconfig), дар файли конфигуратсияи умумисистема (/etc/gitconfig) ва тавассути фармон имконоти сатр ва тағйирёбандаҳои муҳити зист. Ҳангоми иҷро кардани "git config" фаҳмидани он ки танзимоти дилхоҳ дар куҷо муайян карда шудааст, хеле душвор аст. Барои ҳалли ин мушкилот, опсияи "--show-origin" дастрас буд, аммо он танҳо роҳи файлеро нишон медиҳад, ки дар он танзимот муайян карда шудааст, ки ин дар сурати таҳрир кардани файл муфид аст, аммо агар шумо файлро таҳрир карданӣ бошед, кӯмак намекунад. бояд арзишро тавассути "git config" бо истифода аз имконоти "--system", "--global" ё "-local" тағир диҳед. Варианти нави "--show-scope" контексти таърифи тағирёбандаро нишон медиҳад ва метавонад дар якҷоягӣ бо -show-origin истифода шавад:

    $ git --list --show-scope --show-origin
    файли глобалӣ:/home/user/.gitconfig diff.interhunkcontext=1
    файли глобалӣ:/home/user/.gitconfig push.default = ҷорӣ
    […] local file:.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 иҷозат дода мешавад. Ҳама гуна танзимоти HTTP ва маълумоти эътимоднома дар Git мумкин аст ҳам барои ҳама пайвастҳо (http.extraHeader, credential.helper) ва ҳам барои пайвастҳои ба URL асосёфта (credential.https://example.com.helper, credential.https: //example. com.helper). То ба ҳол, аломатҳои ҷонишине, ба монанди *.example.com, танҳо барои танзимоти HTTP иҷозат дода мешуданд, аммо барои ҳатмии эътимоднома дастгирӣ намешуданд. Дар Git 2.26, ин фарқиятҳо бартараф карда мешаванд ва масалан, барои пайваст кардани номи корбар ба ҳама зердоменҳо шумо ҳоло метавонед муайян кунед:

    [маълумотномаи "https://*.example.com"]

    номи корбар = ttaylorr

  • Тавсеаи дастгирии таҷрибавӣ барои клонкунии қисман (қисман клонҳо) идома дорад, ки ба шумо имкон медиҳад танҳо як қисми маълумотро интиқол диҳед ва бо нусхаи нопурраи анбор кор кунед. Варақаи нав фармони нави "git sparse-checkout add" -ро илова мекунад, ки ба шумо имкон медиҳад директорияҳои инфиродӣ илова кунед, то амалиёти "checkout" танҳо ба як қисми дарахти корӣ татбиқ карда шавад, ба ҷои он ки ҳамаи ин директорияҳоро якбора тавассути фармони "git" номбар кунед. маҷмӯаи парокандаи чек" (шумо метавонед як ба як директория илова кунед, бе аз нав нишон додани тамоми рӯйхат ҳар дафъа).
    Масалан, барои клон кардани анбори git/git бе содир кардани блокҳо, маҳдуд кардани чек танҳо бо директорияи решаи нусхаи корӣ ва алоҳида қайд кардани чек барои директорияҳои "t" ва "Documentation", шумо метавонед муайян кунед:

    $ git clone --filter = blob:none --sparse [почтаи электронӣ ҳифз карда шудааст]:git/git.git

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

    $ git камёфт-касса илова т
    ....
    $ git sparse-checkout илова кардани ҳуҷҷатҳо
    ....
    $ git рӯйхати камёфтҳои чек
    Ҳуҷҷатгузорӣ
    t

  • Иҷрои фармони "git grep", ки барои ҷустуҷӯи мундариҷаи ҷории анбор ва таҳрирҳои таърихӣ истифода мешавад, ба таври назаррас беҳтар шудааст. Барои суръат бахшидан ба ҷустуҷӯ, бо истифода аз риштаҳои сершумор (“git grep –threads”) скан кардани мундариҷаи дарахти корӣ имконпазир буд, аммо ҷустуҷӯ дар таҳрирҳои таърихӣ як ришта буд. Ҳоло ин маҳдудият тавассути татбиқи қобилияти параллелизатсияи амалиёти хониш аз нигаҳдории объект бартараф карда шудааст. Бо нобаёнӣ, шумораи риштаҳо ба шумораи ядроҳои CPU баробар аст, ки дар аксари ҳолатҳо ҳоло ба таври возеҳ гузоштани опсияи "-threads" талаб карда намешавад.
  • Дастгирии иловагии автоматии воридкунии зерфармонҳо, роҳҳо, истинодҳо ва дигар далелҳои фармони “git worktree”, ки ба шумо имкон медиҳад бо якчанд нусхаҳои кории анбор кор кунед.
  • Дастгирии иловашуда барои рангҳои дурахшон, ки пайдарпаии гурези ANSI доранд. Масалан, дар танзимоти рангҳои барҷаста "git config -color" ё "git diff -color-moved" шумо метавонед "%C(brightblue)" -ро тавассути опсияи "--format" барои кабуди дурахшон муайян кунед.
  • Варианти нави скрипт илова карда шуд фсмонитор — посбон, таъмин намудани интеграция бо механизм Facebook Watchman тезонидани пайгирии тагйироти файл ва пайдоиши файлхои нав. Пас аз навсозии git лозим аст иваз кунед қалмоқ дар анбор.
  • Барои суръат бахшидан ба клонҳои қисман ҳангоми истифодаи bitmaps оптимизатсияҳо илова карда шуданд
    (мошинҳои bitmap) барои пешгирӣ кардани ҷустуҷӯи пурраи ҳама объектҳо ҳангоми филтр кардани натиҷа. Санҷиши блобҳо (—filter=blob:nne ва —filter=blob:limit=n) ҳангоми клонкунии қисман ҳоло анҷом дода мешавад
    ба таври назаррас тезтар. GitHub часбҳоро бо ин оптимизатсияҳо ва дастгирии таҷрибавӣ барои клонкунии қисман эълон кард.

  • Фармони "git rebase" ба ҷои дигар бо истифода аз механизми пешфарзии "merge" (қаблан барои "rebase -i" истифода мешуд) ба ҷои "patch+apply" интиқол дода шудааст. Паҳнгоҳҳо бо баъзе роҳҳои хурд фарқ мекунанд, масалан, пас аз идомаи амалиёт пас аз ҳалли низоъ (git rebase --continue), пуштибони нав таҳрир кардани паёми супоридаро пешниҳод мекунад, дар ҳоле ки кӯҳна танҳо паёми кӯҳнаро истифода мебарад. Барои баргаштан ба рафтори кӯҳна, шумо метавонед опсияи "--apply" -ро истифода баред ё тағирёбандаи конфигуратсияи "rebase.backend" -ро ба "Apply" таъин кунед.
  • Намунаи коркардкунанда барои параметрҳои аутентификатсия, ки тавассути .netrc муайян шудааст, ба шакли мувофиқ барои истифода аз қуттӣ кам карда шудааст.
  • Танзимоти gpg.minTrustLevel илова карда шуд, то сатҳи ҳадди ақали эътимодро барои унсурҳои гуногуне, ки тафтиши имзои рақамиро иҷро мекунанд, муқаррар кунад.
  • Опсияи "--pathspec-from-file" ба "git rm" ва "git stash" илова карда шуд.
  • Такмили пакетҳои санҷишӣ дар омодагӣ ба гузариш ба алгоритми ҳашингии SHA-2 ба ҷои SHA-1 идома ёфт.

Манбаъ: opennet.ru

Илова Эзоҳ