Gitలో బొట్టు తీయడాన్ని అర్థం చేసుకోవడం
Gitలో, పెద్ద ఫైల్లను నిర్వహించడం ఒక సవాలుగా ఉంటుంది, ప్రత్యేకించి అవి పని చేసే కాపీలో అవసరం లేనప్పుడు. మీ రిపోజిటరీ చరిత్ర నుండి ఈ పెద్ద ఫైల్లను తీసివేయడానికి BFG మరియు Git ఫిల్టర్-రెపో వంటి సాధనాలు పరిష్కారాలను అందిస్తాయి. అయితే, Git Filter-Repoతో BFGతో అదే ఫలితాలను సాధించడం గమ్మత్తైనది.
ఈ కథనం BFG కమాండ్ను ఎలా పునరావృతం చేయాలో అన్వేషిస్తుంది --స్ట్రిప్-బ్లాబ్స్-పెద్ద-దానికంటే Git ఫిల్టర్-రెపో ఉపయోగించి. మేము సాధారణ సమస్యలను పరిష్కరిస్తాము మరియు ఇప్పటికీ ఉపయోగంలో ఉన్న ఫైల్లను అనుకోకుండా తీసివేయకుండానే మీరు మీ రిపోజిటరీని సమర్థవంతంగా శుభ్రం చేయగలరని నిర్ధారించుకోవడానికి దశల వారీ మార్గదర్శిని అందిస్తాము.
| ఆదేశం | వివరణ |
|---|---|
| from git import Repo | Git రిపోజిటరీతో పరస్పర చర్య చేయడానికి GitPython లైబ్రరీ యొక్క Repo తరగతిని దిగుమతి చేస్తుంది. |
| git_filter_repo import RepoFilter | రిపోజిటరీ బ్లాబ్లను ఫిల్టర్ చేయడానికి git-filter-repo నుండి 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 లైబ్రరీని ఉపయోగిస్తుంది. రిపోజిటరీ ఉపయోగించి ప్రారంభించబడింది మరియు , పేర్కొన్న రిపోజిటరీ మార్గాన్ని సూచిస్తోంది. స్క్రిప్ట్ ఫిల్టర్ ఫంక్షన్ని నిర్వచిస్తుంది 10MB కంటే పెద్ద బ్లాబ్లను గుర్తించడానికి. ఈ ఫిల్టర్ ఉపయోగించి వర్తించబడుతుంది RepoFilter(repo).filter_blobs(filter_large_blobs), ఇది పరిమాణ పరిమితిని మించిన బ్లాబ్లు రిపోజిటరీ చరిత్ర నుండి తీసివేయబడతాయని నిర్ధారిస్తుంది.
Git కమాండ్లు మరియు షెల్ యుటిలిటీలను ఉపయోగించి షెల్ స్క్రిప్ట్ ఇదే లక్ష్యాన్ని సాధిస్తుంది. ఇది రిపోజిటరీ డైరెక్టరీకి నావిగేట్ చేస్తుంది మరియు ఉపయోగించిన అన్ని వస్తువులను జాబితా చేస్తుంది . ప్రతి వస్తువు దాని పరిమాణం కోసం తనిఖీ చేయబడుతుంది . పేర్కొన్న పరిమాణ పరిమితి కంటే పెద్ద వస్తువులు ఫిల్టర్ చేయబడతాయి మరియు ఉపయోగించి ప్రాసెస్ చేయబడతాయి xargs దరఖాస్తు గుర్తించబడిన ప్రతి పెద్ద బొట్టుకు. ఈ పద్ధతి రిపోజిటరీ నుండి పెద్ద బ్లాబ్లను సమర్థవంతంగా తొలగిస్తుంది, అనవసరమైన పెద్ద ఫైల్లు లేకుండా క్లీన్ హిస్టరీని నిర్ధారిస్తుంది.
పరిమాణాన్ని బట్టి Git Blobsని ఫిల్టర్ చేయడానికి పైథాన్ని ఉపయోగించడం
పెద్ద బొబ్బలను ఫిల్టర్ చేయడానికి పైథాన్ స్క్రిప్ట్
# Import necessary modulesimport osfrom git import Repofrom git_filter_repo import RepoFilter# Define the repository path and size limitrepo_path = 'path/to/your/repo'size_limit = 10 * 1024 * 1024 # 10 MB# Initialize the repositoryrepo = Repo(repo_path)# Define a filter function to remove large blobsdef filter_large_blobs(blob):return blob.size > size_limit# Apply the filter to the repositoryRepoFilter(repo).filter_blobs(filter_large_blobs)
పెద్ద Git బ్లాబ్లను గుర్తించడానికి మరియు తీసివేయడానికి షెల్ స్క్రిప్ట్ని ఉపయోగించడం
Gitలో బొట్టు నిర్వహణ కోసం షెల్ స్క్రిప్టింగ్
#!/bin/bash# Define repository path and size limitREPO_PATH="path/to/your/repo"SIZE_LIMIT=10485760 # 10 MB# Navigate to the repositorycd $REPO_PATH# List blobs larger than the size limitgit 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_LIMITecho "Large blobs removed from the repository"
అధునాతన Git ఫిల్టర్-రెపో ఎంపికలను అన్వేషిస్తోంది
కాగా పెద్ద ఫైల్లను తీసివేయడానికి ప్రభావవంతంగా ఉంటుంది, మీ రిపోజిటరీ క్లీనప్ను అనుకూలీకరించడానికి అదనపు ఎంపికలు ఉన్నాయి. ఉదాహరణకు, మీరు ఉపయోగించవచ్చు నిర్దిష్ట ఫైల్లు లేదా డైరెక్టరీలకు ఆపరేషన్ను పరిమితం చేయడానికి. బొట్టు తొలగింపు కోసం మీ రిపోజిటరీలోని కొన్ని ప్రాంతాలను మాత్రమే లక్ష్యంగా చేసుకోవడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. మరొక ఉపయోగకరమైన ఎంపిక , ఇది ఆపరేషన్ నుండి పేర్కొన్న పాత్లను మినహాయిస్తుంది, ఏ ఫైల్లు తాకబడకుండా ఉండాలనే దానిపై మరింత నియంత్రణను అందిస్తుంది.
అదనంగా, మీరు కలపవచ్చు తో మార్పులను వర్తింపజేయడానికి ముందు వాటిని పరిదృశ్యం చేయడానికి. ఇది తీసివేయబడే వాటి యొక్క వివరణాత్మక నివేదికను అందించడం ద్వారా అనుకోకుండా తొలగింపులను నివారించడంలో సహాయపడుతుంది. ఈ అధునాతన ఎంపికలను ఉపయోగించడం వలన మీ రిపోజిటరీ నిర్వహణ పనుల యొక్క సౌలభ్యాన్ని మరియు ఖచ్చితత్వాన్ని మెరుగుపరచవచ్చు, క్లీనర్ మరియు మరింత సమర్థవంతమైన ప్రాజెక్ట్ చరిత్రను నిర్ధారిస్తుంది.
- దేనిని చేస్తావా?
- ఇది రిపోజిటరీ చరిత్ర నుండి పేర్కొన్న పరిమాణం కంటే పెద్ద బ్లాబ్లను తొలగిస్తుంది.
- ఎలా చేస్తుంది పని?
- ఇది ఫిల్టర్ ద్వారా ప్రాసెస్ చేయబడకుండా పేర్కొన్న మార్గాలను మినహాయిస్తుంది.
- మార్పులను వర్తింపజేయడానికి ముందు నేను వాటిని ప్రివ్యూ చేయవచ్చా?
- అవును, ఉపయోగిస్తున్నారు మార్పుల యొక్క వివరణాత్మక నివేదికను అందిస్తుంది.
- నేను నిర్దిష్ట ఫైల్లు లేదా డైరెక్టరీలను ఎలా టార్గెట్ చేయాలి?
- ఉపయోగించడానికి నిర్దిష్ట మార్గాలకు కార్యకలాపాలను పరిమితం చేసే ఎంపిక.
- యొక్క ప్రయోజనం ఏమిటి పైథాన్లో తరగతి?
- ఇది రిపోజిటరీకి అనుకూల ఫిల్టర్ల అప్లికేషన్ను అనుమతిస్తుంది.
- చేసిన మార్పులను రద్దు చేయడానికి మార్గం ఉందా ?
- ఒకసారి మార్పులు వర్తింపజేస్తే, వాటిని సులభంగా రద్దు చేయడం సాధ్యం కాదు. ముందుగా మీ రిపోజిటరీని ఎల్లప్పుడూ బ్యాకప్ చేయండి.
- దేనిని చేస్తావా?
- ఇది బొబ్బలు, చెట్లు మరియు కమిట్లతో సహా రిపోజిటరీలోని అన్ని వస్తువులను జాబితా చేస్తుంది.
- ఎందుకు వాడాలి తో ?
- తొలగింపు కోసం గుర్తించబడిన పెద్ద బొబ్బలు వంటి అంశాల జాబితాకు ఆదేశాలను వర్తింపజేయడంలో సహాయపడుతుంది.
పనితీరు మరియు నిల్వను ఆప్టిమైజ్ చేయడానికి Git రిపోజిటరీలో పెద్ద ఫైల్లను సమర్థవంతంగా నిర్వహించడం చాలా అవసరం. BFG మరియు Git ఫిల్టర్-రెపో వంటి సాధనాలను ఉపయోగించడం ఈ ప్రక్రియను క్రమబద్ధీకరించడంలో సహాయపడుతుంది, అయితే ప్రతి ఒక్కటి ప్రత్యేకమైన ఆదేశాలు మరియు పద్ధతులను కలిగి ఉంటాయి. అధునాతన ఎంపికలను ఉపయోగించడం ద్వారా మరియు ప్రతి సాధనం యొక్క సూక్ష్మ నైపుణ్యాలను అర్థం చేసుకోవడం ద్వారా, మీరు మీ రిపోజిటరీ శుభ్రంగా మరియు సమర్థవంతంగా ఉండేలా చూసుకోవచ్చు. డేటా నష్టాన్ని నివారించడానికి ముఖ్యమైన మార్పులు చేసే ముందు మీ రిపోజిటరీని బ్యాకప్ చేయాలని ఎల్లప్పుడూ గుర్తుంచుకోండి. ఈ సాధనాల పరిజ్ఞానాన్ని వ్యూహాత్మక ప్రణాళికతో కలపడం వలన మీ సంస్కరణ నియంత్రణ పద్ధతులు గణనీయంగా మెరుగుపడతాయి.