Git bisect: உங்கள் குறியீட்டில் ஒரு பிழையை எவ்வாறு கண்டறிவது?



Git bisect பற்றிய இந்த கட்டுரை, பைனரி தேடல் வழிமுறையைப் பயன்படுத்தி ஒரு பிழையை அறிமுகப்படுத்தும் முதல் மோசமான செயலைக் கண்டறிய ‘git bisect’ கட்டளை எவ்வாறு உதவுகிறது என்பதை அறிக.

எனது குறியீடு நேற்று வரை நன்றாக வேலை செய்து கொண்டிருந்தது, ஆனால் தொலை களஞ்சியத்திலிருந்து சமீபத்திய இழுப்பு குறியீட்டை உடைக்கும் வரை அல்ல !!!

நீங்கள் இதேபோன்ற சூழ்நிலையில் இருந்தால், தெரியாது என்ன மாற்றம் குறியீட்டை உடைத்தது அல்லது who பல பங்களிப்பாளர்களில் சொந்தமானது இது பிழை / அம்சம் , பின்னர் git bisect உங்கள் வழி. எனவே, கிட் பைசெக்ட் குறித்த இந்த கட்டுரையில் நீங்கள் எப்படி ‘git bisect‘கட்டளை வருகிறது பைனரி தேடல் வழிமுறையைப் பயன்படுத்தி பிழையை அறிமுகப்படுத்தும் முதல் மோசமான செயலைக் கண்டறிவதில் மீட்பு.

இந்த கட்டுரையில் விவரிக்கப்பட்டுள்ள தலைப்புகள் பின்வருமாறு:





ஜாவாவில் நிகழ்வு மாறியின் எடுத்துக்காட்டு

கிட் பைசெக்டை ஏன் பயன்படுத்த வேண்டும்?

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



எனவே, இதுபோன்ற காட்சிகளைத் தவிர்க்க, நீங்கள் பயன்படுத்தலாம்git bisectமோசமான திட்ட திருத்தத்தை (அல்லது ஸ்னாப்ஷாட்) கண்டுபிடித்து இறுதியில் அதை சரிசெய்ய கட்டளையிடவும்git revertகட்டளை.

‘கிட் பிசெக்ட்’ தேடல் எவ்வாறு?



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

தொடரியல்

git bisect

Git bisect ஐ நன்கு புரிந்துகொள்ள, ஒரு காரில் பயன்படுத்த எளிய வழிசெலுத்தல் பயன்பாட்டிற்கான குறியீட்டை உருவாக்கும் திட்டத்தை உருவாக்குவோம்.

ஆரம்ப திட்ட அமைப்பு

ஒரு காரில் பயன்படுத்த எளிய வழிசெலுத்தல் பயன்பாட்டிற்கான குறியீட்டை உருவாக்கும் திட்டத்தை உருவாக்க, நீங்கள் பின்வரும் படிகளைப் பின்பற்றலாம்:

படி 1: உங்கள் $ HOME கோப்புறையில் புதிய கோப்பகத்தை உருவாக்கவும்:

cd $ HOME mkdir my_nav_app

படி 2: புதிய கோப்பகத்திற்கு செல்லவும்:

cd $ my_nav_app

படி 3: எனது கிட்ஹப் பக்கத்திலிருந்து திட்டத்தைப் பதிவிறக்க குளோன்:

git clone https://github.com/divyabhushan/my_nav_app.git

இப்போது, ​​கட்டளையால் அச்சிடப்பட்ட திட்ட அடைவுகள் மற்றும் கோப்புகளின் தளவமைப்பைப் புரிந்துகொள்வோம்:ls -lTR

மூல குறியீடு தளவமைப்பு - கிட் பிசெக்ட் - எடுரேகா

அடுத்து, இந்த குறியீட்டை உருவாக்குவதற்காக நான் செய்த செயல்களைக் காண திட்ட வரலாற்று இதழைப் பார்ப்போம்-

உதாரணமாக, ஒரு எளிய கிட் பதிவு கட்டளை வரலாற்றை விரிவாக அச்சிடுகிறது, இருப்பினும், வரலாற்றை அழகாக வடிவமைத்து தனிப்பயனாக்க விரும்புகிறேன். இதன்மூலம், நம்மைப் பார்ப்போம் மாற்றுப் பெயரை அமைக்கவும் - ‘ஹிஸ்ட்’ பயன்படுத்தி git மாற்று கீழே காட்டப்பட்டுள்ளபடி கட்டளை:

git alias.hist 'log --pretty = format:'% C (மஞ்சள்)% h% Creset% ad | % C (பச்சை)% s% Creset% C (சிவப்பு)% d% Creset% C (நீலம்) [% an] '--graph --decorate --date = short'

இப்போது, ​​‘மாஸ்டர்’ கிளையின் முக்கிய வளர்ச்சியில் தலையிடாதபடி, இந்த பிழை சரிசெய்தல் அம்சத்தை ஒரு தனி கிளையில் செயல்படுத்தப் போகிறேன். அதைச் செய்ய, கீழேயுள்ள கட்டளைகளைப் பின்பற்றவும்:

  • கிளை ‘தேவ்’ உருவாக்கவும்: [மாஸ்டர்] $git கிளை தேவ்
  • கிளை ‘தேவ்’ க்கு மாறவும்: $git checkout dev
  • வரலாற்று பதிவுகளை பட்டியலிடுங்கள்: [dev] $go ஹிஸ்ட்[குறிப்பு: ‘மாற்றுப்பெயர்’ கட்டளை இங்கே பயன்படுத்தப்படுகிறது]

மேலும், கடைசியாக அறியப்பட்ட நல்ல உறுதிப்பாட்டை நான் முன்னிலைப்படுத்தியுள்ளேன், அதில் எனது ஸ்கிரிப்ட் எதிர்பார்த்த சோதனை வழக்கு முடிவுகளுடன் சிறப்பாக செயல்பட்டது, இந்த கமிட் ஸ்னாப்ஷாட் குறித்துள்ளார் v1.0 ஆக.

எனவே, இப்போது எங்கள் கடைசி நல்ல உறுதிப்பாட்டை நாங்கள் அறிந்திருக்கிறோம், இந்த கட்டுரையில் ‘கிட் பைசெக்ட்’ குறித்து முன்னோக்கி சென்று பயன்பாட்டை சோதிப்போம்.

பயன்பாட்டை சோதிக்கவும்

ஸ்கிரிப்டை இவ்வாறு இயக்கவும் - $./scripts/myApplication.sh[முதல் முறையாக சோதனை செய்தல்]



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

மோசமான செயலை அடையாளம் காணுதல்

மோசமான செயலை ஆய்வு செய்ய, நீங்கள் பின்வரும் படிகளைப் பின்பற்றுவீர்கள்:

  • Bisect கட்டளையைத் தொடங்கவும் :git bisect start
  • மோசமான கமிட் ஐடியைக் குறிப்பிடவும்: git bisect bad HEADஅல்லதுgit bisect c5b3ca8
  • கடைசியாக அறியப்பட்ட-நல்ல-உறுதி ஐடியைக் குறிப்பிடவும்: git bisect good v1.0அல்லதுgit bisect 93859d8

இது கமிட் ஐடியிற்கு நம்மைக் கொண்டுவரும் நல்ல மற்றும் கெட்ட கமிட்டுகளுக்கு இடையில் ஏறக்குறைய வரலாற்று வரலாற்றின் வரம்பைப் பிரிக்கிறது: f61a7e8

எனவே, இந்த கமிட் ஐடியில் இருந்தபடியே கட்டளை திட்ட பதிப்பை சரிபார்க்கிறது. இப்போது, ​​மேலே சென்று எங்கள் விண்ணப்பத்தை மீண்டும் சோதிப்போம்.

பயன்பாட்டை இயக்க கட்டளை : $./scripts/myApplication.sh[இரண்டாவது முறையாக சோதனை செய்கிறது]


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


இப்போது, ​​இது தேடல் முடிவுகளை காட்டியபடி வரம்பின் முதல் பாதியில் மேலும் குறைக்கும் -


உங்கள் விண்ணப்பத்தை மீண்டும் சோதிக்கவும் - கட்டளை: $./scripts/myApplication.sh[மூன்றாவது முறையாக சோதனை செய்கிறது]


எனவே, மேலே உள்ளதைப் போல ஒரு பிழையைப் பார்ப்பதால், இது ஒரு மோசமான செயலாகும்.

Bisect கட்டளைக்கு தெரியப்படுத்துங்கள், run ஐ இயக்கவும்git bisect மோசமானது


இது தேடலை மேலும் சுருக்கி, கடைசி நீல வட்டமிட்ட நடுத்தர திருத்தத்திற்கு உங்களை அழைத்துச் செல்கிறது: a6ac769

எனவே, அதே கட்டளையைப் பயன்படுத்தி கடைசியாக எனது விண்ணப்பத்தை சோதிக்கிறேன்: $./scripts/myApplication.sh[நான்காவது முறையாக சோதனை செய்கிறது]

இப்போது, ​​பயன்பாடு மீண்டும் தோல்வியுற்றதால், அது இன்னும் மோசமான செயலாகும். எனவே, பின்வரும் கட்டளையை இயக்கலாம்:

கட்டளையை இயக்கவும்: git bisect மோசமானது

மோசமான கமிட் கிடைத்தது

இது மோசமான கடைசி கடைசி உறுதிப்பாட்டை முடிக்கிறது-

ஜாவாவில் டோஸ்ட்ரிங் என்றால் என்ன


எனவே குறியீடு உடைந்த இடம் இது என்று உங்களுக்குத் தெரியும். அடுத்து என்ன?

எந்த கோப்பில் பிழை இருந்தது என்பதைப் புரிந்து கொள்ளுங்கள்

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

நீங்கள் மேலும் பிழைத்திருத்த விரும்பினால் நீங்கள் வேண்டும் படி தி ஐடி பொருளைச் செய்யுங்கள் .

கட்டளை: git show a6ac76994b3f6c7519204f910fc787b7928cf8ef

இது கமிட் பொருளைப் படித்து பதிவுச் செய்தியையும் உரை வேறுபாட்டையும் அச்சிடும்.

ஒவ்வொரு வரியும் எந்த எழுத்தாளரால் மாற்றப்பட்டது என்பதை எவ்வாறு பகுப்பாய்வு செய்ய ‘கிட் பழி’ கட்டளையைப் பயன்படுத்தலாம், கட்டளையை இவ்வாறு இயக்கவும்:git குற்றம் குறியீடு / develop_nav.sh

தேடலை நிறுத்துங்கள்

தேடலை நிறுத்த, பின்வரும் கட்டளையைப் பயன்படுத்தவும்:

கட்டளை: git bisect reset


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

குறியீட்டை எவ்வாறு சரிசெய்வது / பிழைத்திருத்துவது?

சரி, திட்டத்தின் தற்போதைய நிலையை சரிசெய்ய நீங்கள் செய்யக்கூடிய இரண்டு பணிகள் உள்ளன, இப்போது பிழையை முதலில் கொண்டு வந்த உறுதிப்பாட்டை நீங்கள் அடையாளம் கண்டுள்ளீர்கள்.
இருப்பினும், நீங்கள் ஒரு உறுதிப்பாட்டை மாற்றினால் பகிரப்பட்ட களஞ்சியம் இது சிறந்தது மாற்றியமைக்கவும் git revert ‘கட்டளை.

பணி: குறிப்பிடப்பட்ட மோசமான செயலால் செய்யப்பட்ட மாற்றங்களை மாற்றவும்

கட்டளை: git revert a6ac769

இதன் விளைவாக, இந்த உறுதிப்பாட்டின் மாற்றங்களை மாற்றியமைப்பது 2 காரியங்களைச் செய்தது:

  • இது கடைசியாக சேர்க்கப்பட்ட 3 வரிகளை நீக்கியது (பச்சை நிறத்தில் சுட்டிக்காட்டப்பட்டுள்ளது) மற்றும் நீக்கப்பட்ட வரியை (சிவப்பு நிறத்தில் சுட்டிக்காட்டப்பட்டுள்ளது) மீண்டும் சேர்த்தது. (a6ac769 இன் தலைகீழ்)
  • மாற்றியமைக்கும் செய்தி தகவலுடன் கூடுதல் உறுதிப்பாட்டை உருவாக்கியது

'மாற்றியமைத்தல் கட்டளை அசல் உறுதிப்பாட்டிலிருந்து நீங்கள் மாற்றிய மாற்றத்தைக் கண்காணிப்பதை எளிதாக்குகிறது'

பயன்படுத்த ‘காட்டு’ பொருள் ஐடியைப் படிக்க மீண்டும் கட்டளையிடவும்,

கட்டளை: git show 801f029

இப்போது, ​​முன்னோக்கி சென்று விண்ணப்பத்தை சோதிக்கவும். இது சரியாக இயங்கும்.

கட்டளை: $./scripts/myApplication.sh

இதற்கு மாறாக, வரலாற்றிலிருந்து மோசமான செயலை நீக்க விரும்பினால்:

  • நீங்கள் ‘ git மீட்டமைப்பு ‘உடன் கட்டளை“- ஹார்ட்”விருப்பம் (பகிரப்பட்ட களஞ்சியத்தில் பரிந்துரைக்கப்படவில்லை என்றாலும்).

  • ஒரு கோப்பின் முந்தைய பதிப்பைப் பயன்படுத்தி ‘git checkout‘உடன் கட்டளை‘-‘விருப்பம்.

இது கவனிக்கப்பட வேண்டும், இது ஒரு தொலை களஞ்சியத்திற்கு மாற்றங்களைத் தள்ளும் வரை மட்டுமே உங்கள் உள்ளூர் களஞ்சியத்தில் மாற்றங்களைச் செய்யும். சில மாற்றங்கள் மேலே உள்ள எங்கள் விஷயத்தைப் போலவே புதிய கமிட் ஆப்ஜெக்ட் ஐடியை உருவாக்குவதால், தொலைநிலை களஞ்சியத்திற்கு ஒரு சாதாரண உந்துதல் நிராகரிக்கப்படுகிறது, ஏனெனில் வரலாறு வேறுபட்டிருக்கும். நீங்கள் கண்டிப்பாக ‘ git push ‘உடன் கட்டளை‘--force‘விருப்பம்.

‘மாஸ்டர்’ கிளையைப் புதுப்பிக்கவும்

எனது ‘தேவ்’ கிளையில் பிழையை சரிசெய்தபோது, ​​இந்த மாற்றத்தை இப்போது ‘மாஸ்டர்’ கிளையிலும் இணைக்க முடியும்-

  • ‘மாஸ்டர்’, கட்டளைக்கு மாறவும்:git checkout master
  • சமீபத்திய தோற்றங்களை ‘தோற்றம் / மாஸ்டர்’ இலிருந்து ‘மாஸ்டர்’, கட்டளைக்கு இழுக்கவும்:git pull தோற்றம்
  • ‘dev’ மாற்றங்களை ஒன்றிணைத்தல், கட்டளை:git merge இராட்சத

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

சுருக்கமாக, ‘git bisect’ என்பது ஒரு எளிதான மற்றும் பயனுள்ள கட்டளையாகும் அடையாளம் தி ஐடி செய்யுங்கள் அந்த அறிமுகப்படுத்தப்பட்டது க்கு தவறு உங்கள் இயங்கும் குறியீட்டில் விரிவான உதவியுடன் பைனரி தேடல் தர்க்கரீதியாக பிரித்தல் இடையில் பதிவுகள் பாதியிலேயே உள்ளன நல்ல மற்றும் மோசமான கமிட் சரகம் . முடிவுக்கு, நீங்கள் கற்றுக்கொண்டீர்கள் கண்டறிதல் தவறான பொறுப்பு மற்றும் மாற்றியமைக்கவும் அது செய்த மாற்றம்.

கூடுதலாக, ‘நல்ல’ மற்றும் ‘கெட்ட’ என்ற துணைக் கட்டளைகளுக்கு, திருத்த நிலையை விவரிக்க புதிய மற்றும் பழைய சொற்களையும் பயன்படுத்தலாம். வெவ்வேறு துணைக் கட்டளைகளைக் கடந்து பல முறை கட்டளையை இயக்கலாம் மற்றும் வெவ்வேறு கமிட் (அவள் -1) ஐடிகளை அடையாளம் காண திருத்த / கமிட் ஐடிகளை இயக்கலாம். மாற்றாக, இந்த கட்டளையைப் பயன்படுத்தி உடைந்த குறியீட்டை உருவாக்க தானியங்கு சோதனை ஸ்கிரிப்டையும் இயக்கலாம். மேலும், இந்த கட்டளையின் விரிவான விளக்கத்தை இயக்குவதன் மூலம் கண்டுபிடிக்கவும்git bisect --helpமுனையத்தில். எனவே, இதனுடன் எல்லோரும் கிட் பிசெக்ட் குறித்த இந்த கட்டுரையின் முடிவுக்கு வருகிறோம்.

ஜாவாவில் இரண்டு எண்களைச் சேர்க்கவும்

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

எங்களுக்கு ஒரு கேள்வி கிடைத்ததா? 'கிட் பைசெக்ட்' கட்டுரையின் கருத்துகள் பிரிவில் இதைக் குறிப்பிடவும், விரைவில் நாங்கள் உங்களிடம் வருவோம்.