Git 2.41 மூலக் கட்டுப்பாட்டு அமைப்பு உள்ளது

மூன்று மாத வளர்ச்சிக்குப் பிறகு, விநியோகிக்கப்பட்ட மூலக் கட்டுப்பாட்டு அமைப்பு Git 2.41 வெளியிடப்பட்டது. Git மிகவும் பிரபலமான, நம்பகமான மற்றும் உயர் செயல்திறன் கொண்ட பதிப்பு கட்டுப்பாட்டு அமைப்புகளில் ஒன்றாகும், இது கிளை மற்றும் ஒன்றிணைப்பு அடிப்படையில் நெகிழ்வான நேரியல் அல்லாத மேம்பாட்டு கருவிகளை வழங்குகிறது. வரலாற்றின் ஒருமைப்பாடு மற்றும் முன்னோடி மாற்றங்களுக்கு எதிர்ப்பை உறுதிப்படுத்த, ஒவ்வொரு கமிட்டிலும் முழு முந்தைய வரலாற்றின் மறைமுகமான ஹாஷிங் பயன்படுத்தப்படுகிறது; டெவலப்பர்களின் டிஜிட்டல் கையொப்பங்களுடன் தனிப்பட்ட குறிச்சொற்கள் மற்றும் கமிட்களை சான்றளிக்கவும் முடியும்.

முந்தைய வெளியீட்டுடன் ஒப்பிடும்போது, ​​புதிய பதிப்பில் 542 மாற்றங்கள் அடங்கும், 95 டெவலப்பர்களின் பங்கேற்புடன் தயாரிக்கப்பட்டது, அதில் 29 பேர் முதல் முறையாக வளர்ச்சியில் பங்கேற்றனர். முக்கிய கண்டுபிடிப்புகள்:

  • களஞ்சியத்தில் குறிப்பிடப்படாத (கிளைகள் அல்லது குறிச்சொற்களால் குறிப்பிடப்படவில்லை) அணுக முடியாத பொருட்களை மேம்படுத்தப்பட்ட கையாளுதல். அணுக முடியாத பொருள்கள் குப்பை சேகரிப்பாளரால் நீக்கப்படும், ஆனால் இனம் நிலைமைகளைத் தவிர்க்க அவை நீக்கப்படுவதற்கு முன்பு ஒரு குறிப்பிட்ட காலத்திற்கு களஞ்சியத்தில் இருக்கும். அணுக முடியாத பொருள்கள் நிகழும் காலத்தைக் கண்காணிக்க, ஒரே மாதிரியான பொருள்களை மாற்றும் நேரத்துடன் குறிச்சொற்களை இணைக்க வேண்டியது அவசியம், இது அனைத்து பொருட்களுக்கும் பொதுவான மாற்ற நேரத்தைக் கொண்ட ஒரு பேக் கோப்பில் சேமிக்க அனுமதிக்காது. முன்னதாக, அணுக முடியாத ஒவ்வொரு பொருளும் தனித்தனி கோப்பில் சேமிக்கப்பட்டது, இது அதிக எண்ணிக்கையிலான புதிய அணுக முடியாத பொருட்களை நீக்குவதற்கு இன்னும் தகுதியற்றதாக இருக்கும்போது சிக்கல்களுக்கு வழிவகுத்தது. புதிய வெளியீட்டில், "கிராஃப்ட் பேக்ஸ்" பொறிமுறையானது, அடைய முடியாத பொருட்களை பேக்கிங் செய்வதற்கு முன்னிருப்பாகப் பயன்படுத்தப்படுகிறது, இது அணுக முடியாத அனைத்து பொருட்களையும் ஒரு பேக் கோப்பில் சேமிக்க உங்களை அனுமதிக்கிறது, மேலும் ஒவ்வொரு பொருளின் மாற்ற நேரத்தின் தரவு தனித்தனி அட்டவணையில் பிரதிபலிக்கிறது, சேமிக்கப்படுகிறது. ".mtimes" நீட்டிப்புடன் கூடிய கோப்பில் மற்றும் ".idx" நீட்டிப்புடன் குறியீட்டு கோப்பைப் பயன்படுத்தி இணைக்கப்பட்டுள்ளது.
    Git 2.41 மூலக் கட்டுப்பாட்டு அமைப்பு உள்ளது
  • பேக் கோப்புகளுக்கான வட்டில் தலைகீழ் குறியீட்டை பராமரிப்பது இயல்பாகவே செயல்படுத்தப்படும். டார்வால்ட்ஸ்/லினக்ஸ் களஞ்சியத்தில் சோதனை செய்யும் போது, ​​ரிவர்ஸ் இண்டெக்ஸின் பயன்பாடு, ரிசோர்ஸ்-இன்டென்சிவ் "ஜிட் புஷ்" செயல்பாடுகளை 1.49 மடங்கு விரைவுபடுத்துவதை சாத்தியமாக்கியது, மேலும் "ஜிட் கேட்-ஐப் பயன்படுத்தி ஒரு பொருளின் அளவைக் கணக்கிடுவது போன்ற எளிய செயல்பாடுகள். கோப்பு —batch='%(objectsize:disk)' "77 முறை. தலைகீழ் குறியீட்டுடன் கூடிய கோப்புகள் (".rev") ".git/objects/pack" கோப்பகத்தில் உள்ள களஞ்சியத்தில் சேமிக்கப்படும்.

    Git தனித்தனி கோப்புகளில் அமைந்துள்ள பொருள்களின் வடிவத்தில் அனைத்து தரவையும் சேமிக்கிறது என்பதை நினைவில் கொள்க. களஞ்சியத்துடன் பணிபுரியும் திறனை அதிகரிக்க, பொருள்கள் கூடுதலாக பேக் கோப்புகளில் வைக்கப்படுகின்றன, இதில் தகவல் ஒருவருக்கொருவர் பின்தொடரும் பொருள்களின் ஸ்ட்ரீம் வடிவத்தில் வழங்கப்படுகிறது (கிட் ஃபெட்ச் மற்றும் கிட் புஷ் மூலம் பொருட்களை மாற்றும்போது இதேபோன்ற வடிவம் பயன்படுத்தப்படுகிறது. கட்டளைகள்). ஒவ்வொரு பேக் கோப்பிற்கும், ஒரு குறியீட்டு கோப்பு (.idx) உருவாக்கப்படுகிறது, இது பொருள் அடையாளங்காட்டியைப் பயன்படுத்தி கொடுக்கப்பட்ட பொருள் சேமிக்கப்பட்டுள்ள பேக் கோப்பில் ஆஃப்செட்டை மிக விரைவாக தீர்மானிக்க உங்களை அனுமதிக்கிறது.

    புதிய வெளியீட்டில் சேர்க்கப்பட்டுள்ள தலைகீழ் குறியீடானது, பேக் கோப்பில் பொருளின் இடம் பற்றிய தகவலிலிருந்து பொருள் அடையாளங்காட்டியை நிர்ணயிக்கும் செயல்முறையை மேம்படுத்துவதை நோக்கமாகக் கொண்டுள்ளது. முன்னதாக, பேக் கோப்பைப் பாகுபடுத்தும் போது பறக்கும் போது இதுபோன்ற மாற்றம் செய்யப்பட்டது மற்றும் நினைவகத்தில் மட்டுமே சேமிக்கப்பட்டது, இது ஒத்த குறியீடுகளை மீண்டும் பயன்படுத்த அனுமதிக்காது மற்றும் ஒவ்வொரு முறையும் குறியீட்டை உருவாக்க கட்டாயப்படுத்தியது. ஒரு குறியீட்டை உருவாக்குவதற்கான செயல்பாடானது, பொருள்-நிலை ஜோடிகளின் வரிசையை உருவாக்குவது மற்றும் அதை நிலையின்படி வரிசைப்படுத்துவது ஆகும், இது பெரிய பேக் கோப்புகளுக்கு நீண்ட நேரம் எடுக்கும்.

    எடுத்துக்காட்டாக, பொருள்களின் உள்ளடக்கங்களைக் காண்பிப்பதற்கான ஒரு செயல்பாடு, இது ஒரு நேரடி குறியீட்டைப் பயன்படுத்துகிறது, இது பொருட்களின் அளவைக் காண்பிக்கும் ஒரு செயல்பாட்டை விட 62 மடங்கு வேகமாக இருந்தது, இதற்காக பொருளின் நிலை அட்டவணைப்படுத்தப்படவில்லை. தலைகீழ் குறியீட்டைப் பயன்படுத்திய பிறகு, இந்த செயல்பாடுகள் ஏறக்குறைய அதே நேரத்தை எடுக்கத் தொடங்கின. ரிவர்ஸ் இன்டெக்ஸ்கள், டிஸ்கிலிருந்து தயாராக உள்ள தரவை நேரடியாக மாற்றுவதன் மூலம், பெறுதல் மற்றும் புஷ் கட்டளைகளை இயக்கும் போது, ​​பொருள் அனுப்பும் செயல்பாடுகளை விரைவுபடுத்த உங்களை அனுமதிக்கின்றன.

    Git 2.41 மூலக் கட்டுப்பாட்டு அமைப்பு உள்ளது

  • வரையறுக்கப்பட்ட அணுகலுடன் களஞ்சியங்களை அணுகும்போது நற்சான்றிதழ்களை மாற்றுவதற்குப் பயன்படுத்தப்படும் “நற்சான்றிதழ் உதவியாளர்” நெறிமுறை, WWW-அங்கீகரித்தல் தலைப்புகளை நற்சான்றிதழ் கையாளுபவர் மற்றும் அங்கீகாரம் செய்யப்படும் சேவைக்கு இடையே அனுப்புவதற்கான ஆதரவைச் சேர்த்துள்ளது. WWW-Authenticate ஹெடருக்கான ஆதரவு, பயனர் களஞ்சியங்களுக்கான அணுகலை மேலும் நுணுக்கமாகப் பிரிப்பதற்கும் கோரிக்கைகளுக்குக் கிடைக்கும் ஸ்கோப்களை வரையறுப்பதற்கும் OAuth ஸ்கோப் அளவுருக்களை அனுப்ப உங்களை அனுமதிக்கிறது.
  • for-each-ref கட்டளைக்கு "%(ahead-behind:" வடிவமைப்பு விருப்பம் சேர்க்கப்பட்டது: )”, இது ஒரு குறிப்பிட்ட கிளையில் உள்ள அல்லது இல்லாத கமிட்களின் எண்ணிக்கையைப் பற்றிய தகவல்களை உடனடியாகப் பெற உங்களை அனுமதிக்கிறது, மற்றொரு கிளையுடன் தொடர்புடையது (ஒரு கிளை மற்றொன்றை விட எவ்வளவு பின்னால் அல்லது முன்னால் உள்ளது). முன்னதாக, அத்தகைய தகவலைப் பெற, நீங்கள் இரண்டு தனித்தனி கட்டளைகளை இயக்க வேண்டும்: "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) %(முன்னால்-பின்னால்: தோற்றம்/HEAD)' \refs/heads/tb/ | column -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)" behind="$(git rev-list -count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$behind" முடிந்தது | column -t tb/cruft-extra-tips 2 96 tb/for-each-ref-ஐ தவிர்த்து 16 96 tb/roaring-bitmaps 47 3
  • "-porcelain" விருப்பம் "git fetch" கட்டளையில் சேர்க்கப்பட்டது, குறிப்பிடப்பட்டால், வெளியீடு "" வடிவத்தில் உருவாக்கப்படும். ", குறைவாக படிக்கக்கூடியது, ஆனால் ஸ்கிரிப்ட்களில் பாகுபடுத்துவதற்கு மிகவும் வசதியானது.
  • "fetch.hideRefs" அமைப்பைச் சேர்த்தது, இது சேவையகம் முழு அளவிலான பொருட்களை அனுப்பியுள்ளதா என்பதைச் சரிபார்க்கும் கட்டத்தில் உள்ளூர் களஞ்சியத்தில் சில குறிப்புகளை மறைத்து "ஜிட் ஃபெட்ச்" செயல்பாடுகளை விரைவுபடுத்த அனுமதிக்கிறது, இது நேரத்தை மிச்சப்படுத்துகிறது. தரவை நேரடியாக மீட்டெடுக்கும் சேவையகங்களுக்கு மட்டுமே காசோலையைக் கட்டுப்படுத்துகிறது. எடுத்துக்காட்டாக, அதிக எண்ணிக்கையிலான ட்ராக் செய்யப்பட்ட வெளிப்புற இணைப்புகளைக் கொண்ட களஞ்சியங்களைக் கொண்ட கணினியில் சோதனையை இயக்கும் போது, ​​இலக்கு சேவையகமான $remote இல் குறிப்பிடப்பட்டவை தவிர அனைத்து இணைப்புகளையும் தவிர்த்து, கிட் பெறுதல் செயல்பாட்டை 20 நிமிடங்களிலிருந்து 30 வினாடிகளாகக் குறைத்தது. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ பெற $remote
  • "git fsck" கட்டளையானது ஊழல், செக்சம் இணக்கம் மற்றும் அணுகல்தன்மை பிட்மேப்கள் மற்றும் தலைகீழ் குறியீடுகளில் மதிப்புகளின் சரியான தன்மையை சரிபார்க்கும் திறனை வழங்குகிறது.
  • "git clone --local" கட்டளை இப்போது $GIT_DIR க்குள் உள்ள சிம்லிங்க்களைக் கொண்ட களஞ்சியத்திலிருந்து நகலெடுக்க முயற்சிக்கும்போது ஒரு பிழையைக் காட்டுகிறது.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்