Git 2.41 මූලාශ්‍ර පාලන පද්ධතිය ඇත

මාස තුනක සංවර්ධනයෙන් පසුව, බෙදා හරින ලද මූලාශ්ර පාලන පද්ධතිය Git 2.41 නිකුත් කර ඇත. Git යනු අතු බෙදීම සහ ඒකාබද්ධ කිරීම මත පදනම්ව නම්‍යශීලී රේඛීය නොවන සංවර්ධන මෙවලම් සපයන වඩාත් ජනප්‍රිය, විශ්වාසනීය සහ ඉහළ කාර්ය සාධන අනුවාද පාලන පද්ධති වලින් එකකි. ඉතිහාසයේ අඛණ්ඩතාව සහ ප්‍රතික්‍රියාශීලී වෙනස්කම්වලට ප්‍රතිරෝධය සහතික කිරීම සඳහා, එක් එක් කැපවීම තුළ සමස්ත පෙර ඉතිහාසයම ව්‍යංගයෙන් හෑෂ් කිරීම භාවිතා කරයි; සංවර්ධකයින්ගේ ඩිජිටල් අත්සන් සමඟ තනි ටැග් සහ කැපවීම් සහතික කිරීමට ද හැකිය.

පෙර නිකුතුව හා සසඳන විට, නව අනුවාදයේ වෙනස්කම් 542 ක් ඇතුළත් වූ අතර, සංවර්ධකයින් 95 දෙනෙකුගේ සහභාගීත්වයෙන් සකස් කරන ලද අතර, ඉන් 29 ක් පළමු වරට සංවර්ධනයට සහභාගී විය. ප්රධාන නවෝත්පාදන:

  • ගබඩාවේ සඳහන් නොවන (ශාඛා හෝ ටැග් මගින් යොමු කර නොමැති) ළඟා විය නොහැකි වස්තූන් හැසිරවීම වැඩිදියුණු කිරීම. ළඟා විය නොහැකි වස්තූන් කසළ එකතු කරන්නා විසින් මකා දමනු ලැබේ, නමුත් ධාවන තත්ත්වයන් වළක්වා ගැනීම සඳහා ඒවා මකා දැමීමට පෙර නිශ්චිත කාලයක් ගබඩාවේ පවතී. ළඟා විය නොහැකි වස්තූන් සිදුවීමේ කාලසීමාව නිරීක්ෂණය කිරීම සඳහා, සමාන වස්තූන් වෙනස් කිරීමේ කාලය සමඟ ඒවාට ටැග් ඇමිණීම අවශ්‍ය වේ, එමඟින් සියලුම වස්තූන් පොදු වෙනස් කිරීමේ කාලයක් ඇති එක් ඇසුරුම් ගොනුවක ගබඩා කිරීමට ඉඩ නොදේ. මීට පෙර, ළඟා විය නොහැකි සෑම වස්තුවක්ම වෙනම ගොනුවක ගබඩා කර ඇති අතර, මකාදැමීමට තවමත් සුදුසුකම් නොලබන නැවුම් ළඟා විය නොහැකි වස්තූන් විශාල ප්‍රමාණයක් ඇති විට ගැටළු ඇති විය. නව නිකුතුවේදී, ළඟා විය නොහැකි වස්තූන් ඇසුරුම් කිරීම සඳහා “cruft packs” යාන්ත්‍රණය පෙරනිමියෙන් භාවිතා කරයි, එමඟින් ඔබට ළඟා විය නොහැකි සියලුම වස්තු එක් ඇසුරුම් ගොනුවක ගබඩා කිරීමට ඉඩ සලසයි, සහ එක් එක් වස්තුවේ වෙනස් කිරීමේ කාලය පිළිබඳ දත්ත ගබඩා කර ඇති වෙනම වගුවක පිළිබිඹු වේ. “.mtimes” දිගුව සහිත ගොනුවක සහ “.idx” දිගුව සමඟ දර්ශක ගොනුවක් භාවිතයෙන් සම්බන්ධ කර ඇත.
    Git 2.41 මූලාශ්‍ර පාලන පද්ධතිය ඇත
  • ඇසුරුම් ගොනු සඳහා තැටියේ ප්‍රතිලෝම දර්ශකයක් පවත්වා ගැනීම පෙරනිමියෙන් සක්‍රීය කර ඇත. ටොවල්ඩ්ස්/ලිනක්ස් ගබඩාව මත පරීක්‍ෂා කිරීමේදී, ප්‍රතිලෝම දර්ශකයක් භාවිතයෙන් සම්පත්-අධික “git push” මෙහෙයුම් 1.49 ගුණයකින් වේගවත් කිරීමටත්, “git cat- භාවිතයෙන් තනි වස්තුවක ප්‍රමාණය ගණනය කිරීම වැනි සරල මෙහෙයුම්වලටත් හැකි විය. ගොනුව —batch='%(objectsize:disk)' "77 වරක්. ප්‍රතිලෝම දර්ශකයක් සහිත ගොනු (“.rev”) ගබඩාව තුළ “.git/objects/pack” නාමාවලියෙහි ගබඩා කෙරේ.

    Git සියලුම දත්ත වස්තු ආකාරයෙන් ගබඩා කරන බව මතක තබා ගන්න, ඒවා වෙනම ගොනු වල පිහිටා ඇත. නිධිය සමඟ වැඩ කිරීමේ කාර්යක්ෂමතාව වැඩි කිරීම සඳහා, වස්තූන් අතිරේකව ඇසුරුම් ගොනු වල තැන්පත් කර ඇති අතර, තොරතුරු එකිනෙකා අනුගමනය කරන වස්තු ප්‍රවාහයක ස්වරූපයෙන් ඉදිරිපත් කෙරේ (ගිට් ෆෙච් සහ ගිට් තල්ලුව සමඟ වස්තූන් මාරු කිරීමේදී සමාන ආකෘතියක් භාවිතා කරයි. විධාන). එක් එක් ඇසුරුම් ගොනුවක් සඳහා, දර්ශක ගොනුවක් (.idx) සාදනු ලබන අතර, එමඟින් වස්තුව හඳුනාගැනීම භාවිතා කර ලබා දී ඇති වස්තුව ගබඩා කර ඇති ඇසුරුම් ගොනුවේ ඕෆ්සෙට් ඉතා ඉක්මනින් තීරණය කිරීමට ඔබට ඉඩ සලසයි.

    නව නිකුතුවේ ඇතුළත් කර ඇති ප්‍රතිලෝම දර්ශකය, ඇසුරුම් ගොනුවේ වස්තුව ස්ථානගත කිරීම පිළිබඳ තොරතුරු වලින් වස්තු හඳුනාගැනීමේ ක්‍රියාවලිය ප්‍රශස්ත කිරීම අරමුණු කර ගෙන ඇත. මීට පෙර, එවැනි පරිවර්තනයක් ඇසුරුම් ගොනුව විග්‍රහ කිරීමේදී පියාසර කරන ලද අතර මතකයේ පමණක් ගබඩා කර ඇති අතර, එය සමාන දර්ශක නැවත භාවිතා කිරීමට ඉඩ නොදුන් අතර සෑම අවස්ථාවකම දර්ශකය උත්පාදනය කිරීමට බල කළේය. දර්ශක ගොඩනැගීමේ ක්‍රියාකාරිත්වය වස්තු-ස්ථාන යුගල අරාවක් තැනීම සහ පිහිටීම අනුව එය වර්ග කිරීම දක්වා පැමිණේ, විශාල ඇසුරුම් ගොනු සඳහා දිගු කාලයක් ගත විය හැකිය.

    උදාහරණයක් ලෙස, වස්තුවේ අන්තර්ගතය ප්‍රදර්ශනය කිරීමේ මෙහෙයුමක්, සෘජු දර්ශකයක් භාවිතා කරයි, වස්තුවේ ප්‍රමාණය පෙන්වීමේ මෙහෙයුමකට වඩා 62 ගුණයක් වේගවත් වූ අතර, ඒ සඳහා ස්ථාන-වස්තු දත්ත සුචිගත කර නොමැත. ප්‍රතිලෝම දර්ශකය භාවිතා කිරීමෙන් පසු, මෙම මෙහෙයුම් ආසන්න වශයෙන් එකම කාලයක් ගත වීමට පටන් ගත්තේය. ප්‍රතිලෝම දර්ශක මඟින් තැටියෙන් සූදානම් කළ දත්ත සෘජුවම මාරු කිරීම මඟින් ලබා ගැනීම සහ තල්ලු කිරීමේ විධාන ක්‍රියාත්මක කිරීමේදී වස්තු යැවීමේ මෙහෙයුම් වේගවත් කිරීමට ඔබට ඉඩ සලසයි.

    Git 2.41 මූලාශ්‍ර පාලන පද්ධතිය ඇත

  • සීමිත ප්‍රවේශයක් සහිත ගබඩාවලට ප්‍රවේශ වීමේදී අක්තපත්‍ර මාරු කිරීමට භාවිතා කරන “ඇත්තපත්‍ර සහායක” ප්‍රොටෝකෝලය, අක්තපත්‍ර හසුරුවන්නා සහ සත්‍යාපනය සිදු කරන සේවාව අතර WWW-Authenticate ශීර්ෂ සම්මත කිරීමට සහය එක් කර ඇත. WWW-Authenticate ශීර්ෂය සඳහා වන සහය මඟින් ඔබට ගබඩා වෙත පරිශීලක ප්‍රවේශය වඩාත් කැටිති ලෙස වෙන් කිරීම සහ ඉල්ලීම් සඳහා පවතින විෂය පථයන් සීමා කිරීම සඳහා OAuth විෂය පථ පරාමිතීන් සම්මත කිරීමට ඔබට ඉඩ සලසයි.
  • for-each-ref විධානයට "%(ahead-behind:" යන හැඩතල ගැන්වීම් විකල්පය එකතු කරන ලදී: )”, වෙනත් ශාඛාවකට සාපේක්ෂව යම් ශාඛාවක පවතින හෝ නොපැමිණෙන කැපවීම් සංඛ්‍යාව පිළිබඳ තොරතුරු වහාම ලබා ගැනීමට ඔබට ඉඩ සලසයි (එක් ශාඛාවක් තවත් ශාඛාවකට වඩා කොපමණ පිටුපසින් හෝ ඉදිරියෙන් සිටීද යන්න කැපවීමේ මට්ටමින්). මීට පෙර, එවැනි තොරතුරු ලබා ගැනීම සඳහා, ඔබට වෙනම විධාන දෙකක් ක්‍රියාත්මක කිරීමට අවශ්‍ය විය: "git rev-list -count main..my-feature" ශාඛාවට අනන්‍ය කැපවීම් ගණන ලබා ගැනීමට සහ "git rev-list -count my-feature" ..ප්‍රධාන” නැතිවූ අංකය ලබා ගැනීමට කැපවීම්. දැන් එවැනි ගණනය කිරීම් තනි විධානයකට අඩු කළ හැකි අතර, එය හසුරුවන්නන්ගේ ලිවීම සරල කරන අතර ක්රියාත්මක කිරීමේ කාලය අඩු කරයි. උදාහරණයක් ලෙස, ඒකාබද්ධ නොකළ ශාඛා පෙන්වීමට සහ ඒවායේ ප්‍රධාන ශාඛාවට පිටුපසින් හෝ ඉදිරියෙන් ඇත්ද යන්න ඇගයීමට, ඔබට එක්-ලයිනර් එකක් භාවිතා කළ හැක: $ 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-ref-ref-16 96 tb/roaring-bitmaps 47 3 හැර 17 ගුණයකින් මන්දගාමීව ධාවනය වන, කලින් භාවිතා කරන ලද ස්ක්‍රිප්ට් වෙනුවට: $ git for-each-ref — format='%(refname:short)' —no-merged=සම්භවය/HEAD \ refs/heads/tb | ref කියවන අතරතුර do ahead="$(git rev-list -count origin/HEAD..$ref)" behind="$(git rev-list -count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ඉදිරියට" "$පිටුපස" සිදු | තීරුව -t tb/cruft-extra-tips 2 96 tb/එක් එක්-ref-16 96 tb/roaring-bitmaps 47 3 හැර
  • “-porcelain” විකල්පය “git fetch” විධානයට එක් කර ඇත, සඳහන් කළ විට, ප්‍රතිදානය “ආකෘතියෙන් ජනනය වේ. ", අඩු කියවිය හැකි, නමුත් ස්ක්‍රිප්ට් වල විග්‍රහ කිරීමට වඩාත් පහසු වේ.
  • “fetch.hideRefs” සැකසුම එක් කරන ලදී, එමඟින් සේවාදායකය විසින් සම්පූර්ණ වස්තු කට්ටලයක් යවා ඇත්දැයි පරීක්ෂා කිරීමේ අදියරේදී දේශීය ගබඩාවේ සමහර යොමු සඟවා “ගිට් ෆෙච්” මෙහෙයුම් වේගවත් කිරීමට ඔබට ඉඩ සලසයි, එමඟින් කාලය ඉතිරි වේ. දත්ත සෘජුවම ලබා ගන්නා සේවාදායකයන්ට පමණක් චෙක්පත සීමා කිරීම. උදාහරණයක් ලෙස, ලුහුබැඳ ගිය බාහිර සබැඳි විශාල සංඛ්‍යාවක් අඩංගු ගබඩා සහිත පද්ධතියක් මත පරීක්ෂණයක් ධාවනය කරන විට, ඉලක්ක සේවාදායකය $remote වෙත ආමන්ත්‍රණය කරන ලද සබැඳි හැර අනෙකුත් සියලුම සබැඳි හැර, git ලබා ගැනීමේ ක්‍රියාවලිය මිනිත්තු 20 සිට තත්පර 30 දක්වා ක්‍රියාත්මක කිරීම අඩු කළේය. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ $remote ලබා ගන්න
  • "git fsck" විධානය මඟින් ප්‍රවේශ්‍යතා බිට්මැප් සහ ප්‍රතිලෝම දර්ශකවල දූෂණය, චෙක්සම් අනුකූලතාවය සහ අගයන්හි නිවැරදි බව පරීක්ෂා කිරීමේ හැකියාව සපයයි.
  • "git clone --local" විධානය දැන් $GIT_DIR තුළ ඇති symlinks අඩංගු ගබඩාවකින් පිටපත් කිරීමට උත්සාහ කරන විට දෝෂයක් පෙන්වයි.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න