Git இல் ப்ளாப் ஸ்டிரிப்பிங்கைப் புரிந்துகொள்வது
Git இல், பெரிய கோப்புகளை நிர்வகிப்பது ஒரு சவாலாக இருக்கலாம், குறிப்பாக வேலை செய்யும் நகலில் அவை தேவைப்படாதபோது. BFG மற்றும் Git Filter-Repo போன்ற கருவிகள் இந்த பெரிய கோப்புகளை உங்கள் களஞ்சிய வரலாற்றிலிருந்து அகற்றுவதற்கான தீர்வுகளை வழங்குகின்றன. இருப்பினும், BFG போன்ற Git Filter-Repo உடன் அதே முடிவுகளை அடைவது தந்திரமானதாக இருக்கலாம்.
இந்த கட்டுரை BFG கட்டளையை எவ்வாறு பிரதியெடுப்பது என்பதை ஆராய்கிறது --ஸ்ட்ரிப்-ப்ளாப்ஸ்-பெரியதை விட Git Filter-Repo ஐப் பயன்படுத்துகிறது. நாங்கள் பொதுவான சிக்கல்களைத் தீர்ப்போம் மற்றும் இன்னும் பயன்பாட்டில் உள்ள கோப்புகளை தற்செயலாக அகற்றாமல் உங்கள் களஞ்சியத்தை திறம்பட சுத்தம் செய்ய முடியும் என்பதை உறுதிப்படுத்த படிப்படியான வழிகாட்டியை வழங்குவோம்.
கட்டளை | விளக்கம் |
---|---|
from git import Repo | Git களஞ்சியத்துடன் தொடர்பு கொள்ள GitPython நூலகத்தின் Repo வகுப்பை இறக்குமதி செய்கிறது. |
git_filter_repo import RepoFilter | ரெபோசிட்டரி குமிழ்களை வடிகட்டுவதற்காக, ஜிட்-ஃபில்டர்-ரெப்போவிலிருந்து ரெப்போஃபில்டர் வகுப்பை இறக்குமதி செய்கிறது. |
repo = Repo(repo_path) | குறிப்பிட்ட களஞ்சிய பாதையை சுட்டிக்காட்டும் ரெப்போ பொருளை துவக்குகிறது. |
RepoFilter(repo).filter_blobs(filter_large_blobs) | களஞ்சியத்திலிருந்து பெரிய குமிழ்களை அகற்ற தனிப்பயன் வடிகட்டி செயல்பாட்டைப் பயன்படுத்துகிறது. |
git rev-list --objects --all | குமிழ்கள், மரங்கள் மற்றும் கமிட்கள் உட்பட களஞ்சியத்தில் உள்ள அனைத்து பொருட்களையும் பட்டியலிடுகிறது. |
git cat-file --batch-check | பொருட்களைப் பற்றிய விரிவான தகவல்களை, அவற்றின் அளவு உட்பட வழங்குகிறது. |
xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT | அடையாளம் காணப்பட்ட ஒவ்வொரு பெரிய குமிழிக்கும் git filter-repo கட்டளையைப் பயன்படுத்த xargs ஐப் பயன்படுத்துகிறது. |
வழங்கப்பட்ட ஸ்கிரிப்ட்கள் எவ்வாறு செயல்படுகின்றன
பைதான் ஸ்கிரிப்ட் Git களஞ்சியத்துடன் தொடர்பு கொள்ள GitPython நூலகத்தைப் பயன்படுத்துகிறது. களஞ்சியம் பயன்படுத்தி துவக்கப்படுகிறது from git import Repo மற்றும் repo = Repo(repo_path), குறிப்பிடப்பட்ட களஞ்சிய பாதையை சுட்டிக்காட்டுகிறது. ஸ்கிரிப்ட் ஒரு வடிகட்டி செயல்பாட்டை வரையறுக்கிறது filter_large_blobs(blob) 10MB விட பெரிய குமிழ்களை அடையாளம் காண. இந்த வடிகட்டி பயன்படுத்தி பயன்படுத்தப்படுகிறது RepoFilter(repo).filter_blobs(filter_large_blobs), அளவு வரம்பை மீறும் குமிழ்கள் களஞ்சியத்தின் வரலாற்றிலிருந்து அகற்றப்படுவதை இது உறுதி செய்கிறது.
Git கட்டளைகள் மற்றும் ஷெல் பயன்பாடுகளைப் பயன்படுத்தி ஷெல் ஸ்கிரிப்ட் இதேபோன்ற இலக்கை அடைகிறது. இது களஞ்சிய கோப்பகத்திற்கு செல்லவும் cd $REPO_PATH மற்றும் பயன்படுத்தும் அனைத்து பொருட்களையும் பட்டியலிடுகிறது git rev-list --objects --all. ஒவ்வொரு பொருளும் அதன் அளவு சரிபார்க்கப்படுகிறது git cat-file --batch-check. குறிப்பிட்ட அளவு வரம்பை விட பெரிய பொருள்கள் வடிகட்டப்பட்டு செயலாக்கப்படும் xargs விண்ணப்பிக்க git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT அடையாளம் காணப்பட்ட ஒவ்வொரு பெரிய குமிழிக்கும். இந்த முறையானது களஞ்சியத்தில் இருந்து பெரிய குமிழ்களை திறம்பட நீக்குகிறது, தேவையற்ற பெரிய கோப்புகள் இல்லாமல் சுத்தமான வரலாற்றை உறுதி செய்கிறது.
பைத்தானைப் பயன்படுத்தி ஜிட் ப்ளாப்களை அளவின்படி வடிகட்டவும்
பெரிய குமிழ்களை வடிகட்டுவதற்கான பைதான் ஸ்கிரிப்ட்
# Import necessary modules
import os
from git import Repo
from git_filter_repo import RepoFilter
# Define the repository path and size limit
repo_path = 'path/to/your/repo'
size_limit = 10 * 1024 * 1024 # 10 MB
# Initialize the repository
repo = Repo(repo_path)
# Define a filter function to remove large blobs
def filter_large_blobs(blob):
return blob.size > size_limit
# Apply the filter to the repository
RepoFilter(repo).filter_blobs(filter_large_blobs)
ஷெல் ஸ்கிரிப்டைப் பயன்படுத்தி பெரிய Git Blobs ஐக் கண்டறிந்து அகற்றவும்
Git இல் ப்ளாப் நிர்வாகத்திற்கான ஷெல் ஸ்கிரிப்டிங்
#!/bin/bash
# Define repository path and size limit
REPO_PATH="path/to/your/repo"
SIZE_LIMIT=10485760 # 10 MB
# Navigate to the repository
cd $REPO_PATH
# List blobs larger than the size limit
git rev-list --objects --all |
git cat-file --batch-check='%(objectname) %(objecttype) %(objectsize) %(rest)' |
awk '$3 >= $SIZE_LIMIT {print $1}' |
xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT
echo "Large blobs removed from the repository"
மேம்பட்ட ஜிட் வடிகட்டி-ரெப்போ விருப்பங்களை ஆராய்கிறது
போது git filter-repo --strip-blobs-bigger-than பெரிய கோப்புகளை அகற்றுவதில் பயனுள்ளதாக இருக்கும், உங்கள் களஞ்சியத்தை சுத்தம் செய்ய தனிப்பயனாக்க கூடுதல் விருப்பங்கள் உள்ளன. உதாரணமாக, நீங்கள் பயன்படுத்தலாம் --path குறிப்பிட்ட கோப்புகள் அல்லது கோப்பகங்களுக்கு செயல்பாட்டை மட்டுப்படுத்த. இது உங்கள் களஞ்சியத்தின் சில பகுதிகளை மட்டுமே குமிழ் அகற்றுவதற்கு இலக்கு வைக்க அனுமதிக்கிறது. மற்றொரு பயனுள்ள விருப்பம் --invert-paths, இது செயல்பாட்டிலிருந்து குறிப்பிட்ட பாதைகளைத் தவிர்த்து, எந்தக் கோப்புகள் தீண்டப்படாமல் இருக்கும் என்பதில் கூடுதல் கட்டுப்பாட்டை வழங்குகிறது.
கூடுதலாக, நீங்கள் இணைக்கலாம் --strip-blobs-bigger-than உடன் --analyze மாற்றங்களைப் பயன்படுத்துவதற்கு முன் அவற்றை முன்னோட்டமிட. இது அகற்றப்படுவதைப் பற்றிய விரிவான அறிக்கையை வழங்குவதன் மூலம் தற்செயலான நீக்கங்களைத் தவிர்க்க உதவுகிறது. இந்த மேம்பட்ட விருப்பங்களைப் பயன்படுத்துவது உங்கள் களஞ்சிய பராமரிப்பு பணிகளின் நெகிழ்வுத்தன்மையையும் துல்லியத்தையும் மேம்படுத்தலாம், மேலும் தூய்மையான மற்றும் திறமையான திட்ட வரலாற்றை உறுதி செய்யும்.
Git Filter-Repo இல் அடிக்கடி கேட்கப்படும் கேள்விகள்
- என்ன செய்கிறது git filter-repo --strip-blobs-bigger-than செய்?
- இது களஞ்சிய வரலாற்றிலிருந்து குறிப்பிட்ட அளவை விட பெரிய குமிழ்களை நீக்குகிறது.
- எப்படி செய்கிறது --invert-paths வேலை?
- குறிப்பிட்ட பாதைகள் வடிகட்டியால் செயலாக்கப்படுவதை இது விலக்குகிறது.
- மாற்றங்களைப் பயன்படுத்துவதற்கு முன்பு நான் அவற்றை முன்னோட்டமிடலாமா?
- ஆம், பயன்படுத்தி --analyze மாற்றங்களின் விரிவான அறிக்கையை வழங்குகிறது.
- குறிப்பிட்ட கோப்புகள் அல்லது கோப்பகங்களை எவ்வாறு குறிவைப்பது?
- பயன்படுத்த --path குறிப்பிட்ட பாதைகளுக்கு செயல்பாடுகளை கட்டுப்படுத்தும் விருப்பம்.
- இதன் நோக்கம் என்ன RepoFilter பைத்தானில் வகுப்பு?
- இது தனிப்பயன் வடிப்பான்களை களஞ்சியத்தில் பயன்படுத்த அனுமதிக்கிறது.
- செய்த மாற்றங்களைச் செயல்தவிர்க்க வழி உள்ளதா git filter-repo?
- மாற்றங்கள் பயன்படுத்தப்பட்டால், அவற்றை எளிதாக செயல்தவிர்க்க முடியாது. முதலில் உங்கள் களஞ்சியத்தை எப்போதும் காப்புப் பிரதி எடுக்கவும்.
- என்ன செய்கிறது git rev-list --objects --all செய்?
- இது களஞ்சியத்தில் உள்ள குமிழ்கள், மரங்கள் மற்றும் கமிட்கள் உட்பட அனைத்து பொருட்களையும் பட்டியலிடுகிறது.
- ஏன் பயன்படுத்த வேண்டும் xargs உடன் git filter-repo?
- xargs அகற்றுவதற்காக அடையாளம் காணப்பட்ட பெரிய குமிழ்கள் போன்ற உருப்படிகளின் பட்டியலுக்கு கட்டளைகளைப் பயன்படுத்த உதவுகிறது.
Git Blob மேலாண்மை பற்றிய இறுதி எண்ணங்கள்
Git களஞ்சியத்தில் பெரிய கோப்புகளை திறம்பட நிர்வகிப்பது செயல்திறன் மற்றும் சேமிப்பகத்தை மேம்படுத்துவதற்கு அவசியம். BFG மற்றும் Git Filter-Repo போன்ற கருவிகளைப் பயன்படுத்துவது இந்த செயல்முறையை சீரமைக்க உதவுகிறது, இருப்பினும் ஒவ்வொன்றும் தனித்துவமான கட்டளைகள் மற்றும் முறைகள் உள்ளன. மேம்பட்ட விருப்பங்களைப் பயன்படுத்துவதன் மூலமும், ஒவ்வொரு கருவியின் நுணுக்கங்களைப் புரிந்துகொள்வதன் மூலமும், உங்கள் களஞ்சியம் சுத்தமாகவும் திறமையாகவும் இருப்பதை உறுதிசெய்யலாம். தரவு இழப்பைத் தவிர்க்க, குறிப்பிடத்தக்க மாற்றங்களைச் செய்வதற்கு முன், உங்கள் களஞ்சியத்தை காப்புப் பிரதி எடுக்க எப்போதும் நினைவில் கொள்ளுங்கள். இந்த கருவிகளின் அறிவை மூலோபாய திட்டமிடலுடன் இணைப்பது உங்கள் பதிப்பு கட்டுப்பாட்டு நடைமுறைகளை கணிசமாக மேம்படுத்தும்.