Git 2.41 бастапқы басқару жүйесі қол жетімді

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

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

  • Репозиторийде сілтеме берілмеген (тармақтарға немесе тегтерге сілтеме жасалмайды) қол жетімсіз нысандарды өңдеу жақсартылған. Қол жетпейтін нысандарды қоқыс жинаушы алып тастайды, бірақ жарыс жағдайларын болдырмау үшін алып тастар алдында белгілі бір уақыт репозиторийде қалады. Қолжетімсіз объектілердің кезеңін қадағалау үшін оларға ұқсас объектілердің өзгеру уақыты бар белгілерді байланыстыру қажет, бұл оларды барлық объектілердің ортақ өзгерту уақыты болатын бір бума-файлда сақтауға мүмкіндік бермейді. Бұрын әрбір қол жетімсіз нысан жеке файлда сақталды, бұл әлі жойылуға жатпайтын жаңа қол жетімсіз нысандардың көп саны болса, проблемаларға әкелді. Жаңа шығарылымда әдепкі бойынша қол жетпейтін нысандарды буып-түйу үшін «cruft packs» механизмі пайдаланылады, бұл барлық қол жетпес нысандарды бір бума файлында сақтауға және әрбір нысанның модификация уақыты туралы деректерді бір кестеде сақталған бөлек кестеде көрсетуге мүмкіндік береді. «.mtimes» кеңейтімі бар және «.idx» кеңейтімі бар индекс файлы арқылы байланыстырылған файл.
    Git 2.41 бастапқы басқару жүйесі қол жетімді
  • Әдепкі бойынша, бума файлдары үшін дискідегі кері индексті (revindex) қолдау қосылады. Torvalds/linux репозиторийлерінде тестілеу кезінде кері индексті пайдалану ресурсты көп қажет ететін «git push» операцияларын 1.49 есе және «git cat- көмегімен бір нысанның өлшемін есептеу сияқты қарапайым операцияларды жылдамдатуға мүмкіндік берді. файл --batch='%(objectsize:disk)' » 77 рет. Кері индексі бар файлдар («.rev») «.git/objects/pack» каталогында репозиторий ішінде сақталады.

    Еске салайық, Git барлық деректерді бөлек файлдарға орналастырылған нысандар түрінде сақтайды. Репозиториймен жұмыс істеудің тиімділігін арттыру үшін объектілер пакеттік файлдарға қосымша орналастырылады, оларда ақпарат бірінен соң бірі объектілер ағыны түрінде ұсынылады (ұқсас пішім нысандарды git fetch және git арқылы тасымалдау кезінде қолданылады. push пәрмендері). Әрбір бума файлы үшін индекстік файл (.idx) жасалады, ол берілген нысан нысан идентификаторымен сақталатын бума файлындағы ығысуды өте жылдам анықтауға мүмкіндік береді.

    Жаңа шығарылымға енгізілген кері индекс бума файлындағы нысанның орналасқан жері туралы ақпараттан нысан идентификаторын анықтау процесін оңтайландыруға бағытталған. Бұрын мұндай түрлендіру пакеттік файлды талдау кезінде жылдам орындалды және тек жадта сақталды, бұл мұндай индекстерді қайта пайдалануға мүмкіндік бермеді және индексті әр уақытта генерациялауға мәжбүр етті. Индекс құру операциясы нысан-позиция жұптарының массивін құруға және оны позиция бойынша сұрыптауға дейін азаяды, бұл үлкен бума файлдары үшін көп уақыт алуы мүмкін.

    Мысалы, тікелей индексті пайдаланатын объектілердің мазмұнын көрсету операциясы объектілердің өлшемін көрсету операциясынан 62 есе жылдам болды, олар үшін позиция мен объект арасындағы қатынас деректері индекстелмеген. Кері индексті қолданғаннан кейін бұл операциялар шамамен бірдей уақытты ала бастады. Кері индекстер сонымен қатар дискіден дайын деректерді тікелей тасымалдау арқылы алу және түрту командаларын орындау кезінде объектілерді жіберу жұмысын жылдамдатуға мүмкіндік береді.

    Git 2.41 бастапқы басқару жүйесі қол жетімді

  • Шектеулі репозиторийлерге қатынасу кезінде тіркелгі деректерін жіберу үшін пайдаланылатын "тіркелгі деректерінің көмекшісі" протоколына тіркелгі деректерін өңдеуші мен түпнұсқалық растама қызметі арасында WWW-Authenticate тақырыптарын өткізуге қолдау қосылды. WWW-Authenticate тақырыбына қолдау көрсету OAuth ауқымының параметрлерін пайдаланушының репозитарийлерге неғұрлым егжей-тегжейлі жеке қатынасына жіберуге және сұраулар үшін қолжетімді аумақтарды шектеуге мүмкіндік береді.
  • Қосылған пішім опциясы "%(алға-артқа: )», бұл басқа филиалға қатысты белгілі бір филиалда бар немесе жоқ міндеттемелер саны туралы ақпаратты дереу алуға мүмкіндік береді (бір тармақ басқасынан қаншалықты артта қалады немесе міндеттемелер деңгейінде алда). Бұрын бұл ақпаратты алу үшін екі бөлек пәрмен қажет болды: «git rev-list --count main..my-feature» филиалға бірегей міндеттемелер санын алу үшін және «git rev-list --count my-feature.. жетіспейтін тапсырмаларды алу үшін main» түймесін басыңыз. Енді мұндай есептеулерді бір командаға дейін қысқартуға болады, бұл жазу өңдеушілерін жеңілдетеді және орындау уақытын қысқартады. Мысалы, біріктірілмеген тармақтарды көрсету және олардың негізгі тармақтарының артында немесе алда екенін бағалау үшін бір сызықты қолдануға болады: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(алда-артында :origin/HEAD)' \ refs/heads/tb/ | баған -t tb/cruft-extra-tips 2 96 tb/for-each-ref—алғашқы қолданылған сценарийдің орнына 16 96 tb/roaring-bitmaps 47 3, ол 17 есе баяу: $git for-each-ref — format='%(refname:short)' --no-merged=origin/HEAD \ refs/heads/tb | оқығанда ref do ahead="$(git rev-list --count origin/HEAD..$ref)" артында="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$алда" "$артында" орындалды | баған -t tb/cruft-extra-tips 2 96 tb/əрбір-реф.-шығарыңыз 16 96 tb/roaring-bitmaps 47 3
  • «git fetch» ​​пәрменіне «--porcelain» опциясы қосылды, ол « пішімінде нәтиже шығарады. ”, аз оқылатын, бірақ сценарийлерде талдауға ыңғайлы.
  • Сервер нысандардың толық жинағын жіберген-жібермегенін тексеру сатысында жергілікті репозиторийдегі сілтемелердің бір бөлігін жасыру арқылы «git fetch» ​​операцияларын жылдамдату үшін «fetch.hideRefs» параметрі қосылды, бұл тексеруді тек серверлерге ғана шектеу арқылы уақытты үнемдейді. олардан деректер тікелей алынады. Мысалы, бақыланатын сыртқы сілтемелердің үлкен санын қамтитын репозиторийлері бар жүйеде тестілеу кезінде $remote мақсатты серверіне жіберілген сілтемелерден басқа барлық сілтемелерді қоспағанда, "git fetch" әрекетін 20 минуттан 30 секундқа дейін қысқартты. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $remote
  • «git fsck» пәрмені қол жетімділік нүктелік кескіндеріндегі және кері индекстердегі бұзылуды, бақылау сомасының сәйкестігін және мәндердің дұрыстығын тексеру мүмкіндігін жүзеге асырады.
  • "git clone --local" пәрмені енді $GIT_DIR ішіндегі символдық сілтемелері бар репозиторийден көшіру әрекеті кезінде қатені көрсетеді.

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

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