கமிட்களை அடையாளம் காண்பதற்கான அறிமுகம்
சில மாதங்களுக்கு முன்பு, எனது திட்டத்தில் நான் பயன்படுத்தும் திட்டத்திற்கான GitHub களஞ்சியத்தில் இழுக்க கோரிக்கை விடுத்தேன். நான் இந்த PR உடன் பணிபுரிந்து வருகிறேன், இப்போது அதைச் சுத்தமாக மீண்டும் உருவாக்குவதே முன்னோக்கிச் செல்வதற்கான எளிதான வழி போல் தெரிகிறது.
அதைச் செய்ய, லோக்கல் ரெப்போவில் ஜிட் டிஃப்பை இயக்க நான் தொடங்கிய உறுதிமொழியைக் கண்டுபிடிக்க வேண்டும். தெரிந்தவருக்கு இரண்டு மாதங்களுக்கு முன் SHA ஐக் கண்டுபிடிக்க எளிதான வழி உள்ளதா? அல்லது ஜிட் பதிவை இயக்கி, நான் தொடங்கிய உறுதியைப் பார்க்கும் வரை அதை பார்வைக்கு ஆய்வு செய்ய வேண்டுமா?
கட்டளை | விளக்கம் |
---|---|
git rev-list | பட்டியல்கள் பொருள்களை தலைகீழ் காலவரிசைப்படி உருவாக்குகின்றன, இது ஒரு குறிப்பிட்ட தேதிக்கு முன் SHA ஐக் கண்டறியப் பயன்படுகிறது. |
git rev-parse | ஒரு மீள்திருத்தத்தை பாகுபடுத்தி (எ.கா. கிளையின் பெயர் அல்லது கமிட் SHA) தொடர்புடைய SHA-1 மதிப்பை வெளியிடுகிறது. |
requests.get | GitHub API இலிருந்து கமிட்களைப் பெற பைதான் ஸ்கிரிப்ட்டில் பயன்படுத்தப்படும் குறிப்பிட்ட URL க்கு GET கோரிக்கையை உருவாக்குகிறது. |
datetime.timedelta | இரண்டு மாதங்களுக்கு முந்தைய தேதியைக் கணக்கிடப் பயன்படுத்தப்படும் இரண்டு தேதிகள் அல்லது நேரங்களுக்கு இடையிலான வித்தியாசம், கால அளவைக் குறிக்கிறது. |
datetime.isoformat | API வினவல்களில் பயன்படுத்துவதற்கு ஏற்ற ISO 8601 வடிவமைப்பில் தேதியைக் குறிக்கும் சரத்தை வழங்குகிறது. |
git log --since | இரண்டு மாதங்களுக்கு முன்பு இருந்து கமிட் SHA ஐ கைமுறையாகக் கண்டறியப் பயன்படுத்தப்படும் குறிப்பிட்ட தேதியிலிருந்து உறுதிப் பதிவுகளைக் காட்டுகிறது. |
ஸ்கிரிப்ட் பயன்பாட்டின் விரிவான விளக்கம்
முதல் ஸ்கிரிப்ட் என்பது இரண்டு மாதங்களுக்கு முன்பிருந்த ஒரு கமிட்டியின் SHA ஐக் கண்டறிந்து இழுக்கும் கோரிக்கைக்கான வித்தியாசத்தை உருவாக்க வடிவமைக்கப்பட்ட ஒரு பாஷ் ஸ்கிரிப்ட் ஆகும். இது கட்டளையைப் பயன்படுத்துகிறது git rev-list கமிட் பொருள்களை தலைகீழ் காலவரிசைப்படி பட்டியலிட, பின்னர் குறிப்பிட்ட தேதிக்கு முன் முதல் கமிட்டைக் கண்டறியும். தி date இரண்டு மாதங்களுக்கு முந்தைய தேதியைக் கணக்கிட கட்டளை பயன்படுத்தப்படுகிறது, மற்றும் git rev-parse கிளையின் சமீபத்திய உறுதிப்பாட்டின் SHA ஐப் பெற பயன்படுகிறது. இறுதியாக, git diff இந்த இரண்டு கமிட்களுக்கும் இடையே வேறுபாட்டை உருவாக்குகிறது.
இரண்டாவது ஸ்கிரிப்ட் ஒரு பைதான் ஸ்கிரிப்ட் ஆகும், இது ஒரு களஞ்சியத்திலிருந்து கமிட்களைப் பெற GitHub API உடன் தொடர்பு கொள்கிறது. இது பயன்படுத்துகிறது requests.get GitHub க்கு API அழைப்பைச் செய்வதற்கான செயல்பாடு, இரண்டு மாதங்களுக்கு முன்பு கணக்கிடப்பட்ட தேதியிலிருந்து கமிட்களை மீட்டெடுக்கிறது datetime.timedelta. மீட்டெடுக்கப்பட்ட JSON தரவு, பழமையான மற்றும் சமீபத்திய கமிட்களைக் கண்டறிய பாகுபடுத்தப்பட்டு, அவற்றின் SHAகள் அச்சிடப்படுகின்றன. இந்த ஸ்கிரிப்ட் பலப்படுத்துகிறது datetime.isoformat API கோரிக்கைக்கான தேதியை சரியாக வடிவமைக்கும் முறை.
Git கட்டளைகளைப் பயன்படுத்தி சரியான வேறுபாட்டைக் கண்டறியவும்
கிட் மற்றும் பாஷ் ஸ்கிரிப்ட்
#!/bin/bash
# Find the commit SHA from two months ago
# and get the diff for a pull request
COMMIT_DATE=$(date -d "2 months ago" '+%Y-%m-%d')
START_COMMIT=$(git rev-list -n 1 --before="$COMMIT_DATE" main)
# Replace 'main' with the appropriate branch if necessary
END_COMMIT=$(git rev-parse HEAD)
echo "Start commit: $START_COMMIT"
echo "End commit: $END_COMMIT"
git diff $START_COMMIT $END_COMMIT > pr_diff.patch
GitHub API இலிருந்து கமிட்களைப் பெறுகிறது
கிட்ஹப் ஏபிஐ பயன்படுத்தி பைதான் ஸ்கிரிப்ட்
import requests
import datetime
# Set up your GitHub token and repo details
GITHUB_TOKEN = 'your_github_token'
REPO_OWNER = 'repo_owner'
REPO_NAME = 'repo_name'
# Calculate the date two months ago
two_months_ago = datetime.datetime.now() - datetime.timedelta(days=60)
headers = {'Authorization': f'token {GITHUB_TOKEN}'}
url = f'https://api.github.com/repos/{REPO_OWNER}/{REPO_NAME}/commits?since={two_months_ago.isoformat()}'
response = requests.get(url, headers=headers)
commits = response.json()
if commits:
start_commit = commits[-1]['sha']
end_commit = commits[0]['sha']
print(f"Start commit: {start_commit}")
print(f"End commit: {end_commit}")
Git Log உடன் கமிட் SHA பெறுதல்
கையேடு Git கட்டளை வரி
# Open your terminal and navigate to the local repository
cd /path/to/your/repo
# Run git log and search for the commit SHA
git log --since="2 months ago" --pretty=format:"%h %ad %s" --date=short
# Note the commit SHA that you need
START_COMMIT=<your_start_commit_sha>
END_COMMIT=$(git rev-parse HEAD)
# Get the diff for the pull request
git diff $START_COMMIT $END_COMMIT > pr_diff.patch
துல்லியமான வேறுபாடுகளுக்கான கமிட் வரலாறுகளை மறுபரிசீலனை செய்தல்
புல் கோரிக்கைகளை நிர்வகிப்பதற்கான மற்றொரு முக்கிய அம்சம் மற்றும் கமிட் ஹிஸ்டரிகளை Git இன் சக்திவாய்ந்த reflog அம்சத்தை எவ்வாறு பயன்படுத்துவது என்பதைப் புரிந்துகொள்வது. கிளைகள் மற்றும் பிற குறிப்புகளின் நுனியில் புதுப்பிப்புகளை ரெஃப்லாக் பதிவு செய்கிறது, கிளைகளின் வரலாற்று நகர்வுகளைப் பார்க்கவும், கிளை வரலாற்றின் மூலம் அவற்றை அணுக முடியாவிட்டாலும் கடந்த கால உறுதி நிலைகளைக் கண்டறியவும் உங்களை அனுமதிக்கிறது. சில மாதங்களுக்கு முன்பு SHA ஐ நீங்கள் கண்டுபிடிக்க வேண்டும், ஆனால் குறிப்பிட்ட தேதி இல்லை என்றால் இது மிகவும் பயனுள்ளதாக இருக்கும்.
இயக்குவதன் மூலம் git reflog கட்டளை, கிளையின் தலைவிற்கான மாற்றங்களின் பதிவைக் காணலாம், இதில் மீட்டமைவுகள், மறுதளங்கள் மற்றும் ஒன்றிணைத்தல் ஆகியவை அடங்கும். நீங்கள் தொடங்கிய கமிட்டியின் SHA ஐ அடையாளம் காண இந்தப் பதிவு உதவும். இந்த முறையைப் பயன்படுத்தி, துல்லியமான உறுதிப்பாட்டைக் குறிப்பிடுவதற்கு நீங்கள் reflog உள்ளீடுகள் மூலம் செல்லலாம், பின்னர் உங்கள் இழுத்தல் கோரிக்கைக்கு ஒரு துல்லியமான வேறுபாட்டை உருவாக்கப் பயன்படுத்தலாம்.
Git Pull கோரிக்கைகளை நிர்வகிப்பதற்கான பொதுவான கேள்விகள் மற்றும் தீர்வுகள்
- மாதங்களுக்கு முன்பிருந்த ஒரு குறிப்பிட்ட கமிட் SHA ஐ நான் எப்படிக் கண்டுபிடிப்பது?
- பயன்படுத்தவும் git rev-list தேதி வடிகட்டி அல்லது git reflog SHA ஐக் கண்டறிய கட்டளை.
- இரண்டு கமிட்களுக்கு இடையே வேறுபாட்டை உருவாக்க சிறந்த வழி எது?
- பயன்படுத்த git diff இரண்டு கமிட்களின் SHAகளுடன் கட்டளை.
- GitHub API ஐப் பயன்படுத்தி ஒரு குறிப்பிட்ட காலக்கட்டத்தில் இருந்து கமிட்களை எவ்வாறு பெறுவது?
- பயன்படுத்தி வடிவமைக்கப்பட்ட தேதி அளவுருவுடன் GitHub API ஐப் பயன்படுத்தவும் datetime.isoformat பைத்தானில்.
- இதன் நோக்கம் என்ன git rev-parse கட்டளையா?
- இது கிளை பெயர்கள் அல்லது உறுதி குறிப்புகளை SHA-1 ஹாஷ் மதிப்புகளாக மாற்றுகிறது.
- கமிட் பதிவுகளை நான் எவ்வாறு கைமுறையாக ஆய்வு செய்யலாம்?
- ஓடு git log போன்ற பொருத்தமான வடிகட்டிகளுடன் --since உறுதி வரலாற்றைப் பார்க்க.
- உறுதியான SHAகளைக் கண்டறியும் செயல்முறையை நான் தானியங்குபடுத்த முடியுமா?
- ஆம், பாஷ் அல்லது பைதான் போன்ற ஸ்கிரிப்ட்களைப் பயன்படுத்தி, தகவல்களைப் பெறுதல் மற்றும் செயலாக்குதல் ஆகியவற்றை தானியங்குபடுத்துதல்.
- எப்படி செய்கிறது datetime.timedelta ஸ்கிரிப்டிங்கில் உதவியா?
- இது தேதி வேறுபாடுகளைக் கணக்கிடுகிறது, தற்போதைய தேதியுடன் தொடர்புடைய தேதிகளைத் தீர்மானிக்க பயனுள்ளதாக இருக்கும்.
- என்ன செய்கிறது requests.get பைத்தானில் செயல்படுமா?
- GitHub போன்ற APIகளில் இருந்து தரவை மீட்டெடுக்க HTTP GET கோரிக்கைகளை இது செய்கிறது.
- ஒரு கோப்பில் வேறுபாடு வெளியீட்டை எவ்வாறு சேமிப்பது?
- வெளியீட்டை திசைதிருப்பவும் git diff to a file using the > உங்கள் கட்டளையில் உள்ள > ஆபரேட்டரைப் பயன்படுத்தி ஒரு கோப்பிற்கு.
இழுக்கும் கோரிக்கைகளுக்கான வேறுபாடுகளை உருவாக்குவதற்கான இறுதி எண்ணங்கள்
க்ளீன் புல் கோரிக்கையை மீண்டும் உருவாக்குவது, கடந்த காலத்திலிருந்து சரியான கமிட் SHA ஐ அடையாளம் காண்பதை உள்ளடக்குகிறது. போன்ற முறைகளைப் பயன்படுத்துதல் git rev-list மற்றும் git log, அல்லது GitHub API உடன் தொடர்பு கொள்ளும் ஸ்கிரிப்ட்களை மேம்படுத்துதல், இந்த செயல்முறையை நெறிப்படுத்தலாம். கமிட் SHAகளின் மீட்டெடுப்பை தானியங்குபடுத்துவதன் மூலமும், வேறுபாடுகளை உருவாக்குவதன் மூலமும், நீங்கள் நேரத்தைச் சேமிக்கலாம் மற்றும் துல்லியத்தை உறுதிப்படுத்தலாம். இந்த நுட்பங்கள் ஒரு சுத்தமான மற்றும் ஒழுங்கமைக்கப்பட்ட கோட்பேஸைப் பராமரிக்கவும், மென்மையான ஒத்துழைப்பு மற்றும் திட்ட நிர்வாகத்தை எளிதாக்கவும் விலைமதிப்பற்றவை.