Azure रिपोजिटरी आकार सीमाओं पर काबू पाना
Git रिपॉजिटरी को Azure में माइग्रेट करने में कभी-कभी चुनौतियों का सामना करना पड़ सकता है, खासकर बड़े रिपॉजिटरी आकार के साथ काम करते समय। एक सामान्य त्रुटि, "TF402462 पुश अस्वीकार कर दिया गया क्योंकि आकार 5120 एमबी से अधिक था," प्रक्रिया को अप्रत्याशित रूप से रोक सकता है। यह समस्या अक्सर .git निर्देशिका में बड़े आकार की फ़ाइलों या इतिहास के कारण उत्पन्न होती है।
इस लेख में, हम इस समस्या को हल करने के चरणों का पता लगाएंगे, जिसमें बड़ी फ़ाइलों को प्रभावी ढंग से प्रबंधित करने के लिए Git LFS (बड़ी फ़ाइल संग्रहण) का उपयोग शामिल है। कारणों को समझकर और सही समाधान लागू करके, आप आकार सीमा को पार किए बिना अपने रिपॉजिटरी को Azure में सफलतापूर्वक स्थानांतरित कर सकते हैं।
आज्ञा | विवरण |
---|---|
git lfs install | रिपॉजिटरी में Git लार्ज फाइल स्टोरेज (LFS) को इनिशियलाइज़ करता है। |
git lfs track | Git LFS के साथ विशिष्ट फ़ाइल प्रकारों को ट्रैक करता है, जिससे रिपॉजिटरी आकार पर उनका प्रभाव कम हो जाता है। |
git lfs migrate import | Git LFS द्वारा प्रबंधित की जाने वाली बड़ी फ़ाइलों को आयात और माइग्रेट करता है। |
git filter-repo | प्रतिबद्ध इतिहास से बड़ी फ़ाइलों को हटाने के लिए रिपॉजिटरी को फ़िल्टर करता है। |
git gc --prune=now | रिपॉजिटरी का आकार कम करने के लिए कचरा अनावश्यक फ़ाइलों को एकत्रित करता है और उनकी काट-छाँट करता है। |
git push --mirror | सभी रेफरी (शाखाएं, टैग) को एक रिपॉजिटरी से दूसरे रिपॉजिटरी में धकेलता है। |
एज़्योर माइग्रेशन के लिए स्क्रिप्ट को समझना
पहली स्क्रिप्ट आपके रिपॉजिटरी में बड़ी फ़ाइलों को संभालने के लिए Git LFS (बड़ी फ़ाइल स्टोरेज) का उपयोग करने पर केंद्रित है। इसकी शुरुआत Git LFS को इनिशियलाइज़ करने से होती है git lfs install आज्ञा। इसके बाद बड़ी फ़ाइलों को ट्रैक किया जाता है git lfs track, जो सुनिश्चित करता है कि विशिष्ट फ़ाइल प्रकार Git LFS द्वारा प्रबंधित किए जाते हैं। ट्रैकिंग सेट करने के बाद स्क्रिप्ट का उपयोग होता है git lfs migrate import मौजूदा बड़ी फ़ाइलों को LFS में आयात करने के लिए। यह प्रक्रिया रिपॉजिटरी के आकार को कम करने में मदद करती है, जिससे Azure पर पुश करना आसान हो जाता है। अंत में, स्क्रिप्ट का उपयोग करके संपूर्ण रिपॉजिटरी को आगे बढ़ाने का प्रयास किया जाता है git push --mirror आज्ञा।
दूसरी स्क्रिप्ट रिपॉजिटरी का विश्लेषण और साफ़ करने के लिए पायथन-आधारित दृष्टिकोण है। यह स्थानीय स्तर पर रिपॉजिटरी की क्लोनिंग से शुरू होता है subprocess.run(['git', 'clone', repo_url]) और फिर रिपॉजिटरी निर्देशिका पर नेविगेट करता है। स्क्रिप्ट का उपयोग करता है git filter-repo इतिहास से बड़ी फ़ाइलों को हटाने के लिए, इसके बाद git gc --prune=now कचरा इकट्ठा करना और अनावश्यक फ़ाइलों की छँटाई करना। इससे रिपॉजिटरी का आकार काफी कम हो जाता है। अंत में, साफ किए गए भंडार को Azure का उपयोग करके धकेल दिया जाता है subprocess.run(['git', 'push', '--mirror', 'azure-remote-url']). ये चरण सुनिश्चित करते हैं कि रिपॉजिटरी Azure द्वारा लगाई गई आकार सीमा के भीतर रहे।
Azure माइग्रेशन के लिए बड़ी फ़ाइलों को प्रबंधित करने के लिए Git LFS का उपयोग करना
फ़ाइल माइग्रेशन के लिए Git बैश स्क्रिप्ट
# Step 1: Initialize Git LFS
git lfs install
# Step 2: Track specific large file types
git lfs track "*.zip" "*.a" "*.tar" "*.dll" "*.lib" "*.xz" "*.bz2" "*.exe" "*.ttf" "*.ttc" "*.db" "*.mp4" "*.tgz" "*.pdf" "*.dcm" "*.so" "*.pdb" "*.msi" "*.jar" "*.bin" "*.sqlite"
# Step 3: Add .gitattributes file
git add .gitattributes
git commit -m "Track large files using Git LFS"
# Step 4: Migrate existing large files to Git LFS
git lfs migrate import --include="*.zip,*.a,*.tar,*.dll,*.lib,*.xz,*.bz2,*.exe,*.ttf,*.ttc,*.db,*.mp4,*.tgz,*.pdf,*.dcm,*.so,*.pdb,*.msi,*.jar,*.bin,*.sqlite"
# Step 5: Push the repository to Azure
git push --mirror
सफल एज़्योर माइग्रेशन के लिए रिपॉजिटरी का आकार कम करना
रिपॉजिटरी का विश्लेषण और साफ़ करने के लिए पायथन स्क्रिप्ट
import os
import subprocess
# Step 1: Clone the repository locally
repo_url = 'your-repo-url'
subprocess.run(['git', 'clone', repo_url])
# Step 2: Change directory to the cloned repo
repo_name = 'your-repo-name'
os.chdir(repo_name)
# Step 3: Remove large files from history
subprocess.run(['git', 'filter-repo', '--path-glob', '*.zip', '--path-glob', '*.tar', '--path-glob', '*.dll', '--path-glob', '*.mp4', '--strip-blobs-bigger-than', '10M'])
# Step 4: Garbage collect to reduce repo size
subprocess.run(['git', 'gc', '--prune=now'])
# Step 5: Push the cleaned repository to Azure
subprocess.run(['git', 'push', '--mirror', 'azure-remote-url'])
Azure में रिपोजिटरी आकार के मुद्दों को संबोधित करना
बड़े Git रिपॉजिटरी के प्रबंधन का एक अन्य महत्वपूर्ण पहलू इतिहास और अप्रयुक्त फ़ाइलों पर विचार करना है। समय के साथ, रिपॉजिटरी ऐतिहासिक डेटा की एक महत्वपूर्ण मात्रा जमा करती है, जो आकार के मुद्दे में योगदान कर सकती है। उपकरण जैसे git filter-repo और git gc इस डेटा को साफ़ करने में सहायता करें. git filter-repo कमांड बड़ी फ़ाइलों या संवेदनशील डेटा को हटाने के लिए इतिहास को फिर से लिखने के लिए विशेष रूप से उपयोगी है, जो रिपॉजिटरी के पदचिह्न को प्रभावी ढंग से कम करता है।
इसके अतिरिक्त, git gc कमांड, खासकर जब इसके साथ प्रयोग किया जाता है --prune=now विकल्प, कूड़ा-कचरा इकट्ठा करने और लटकते कमिट और अन्य पहुंच योग्य वस्तुओं को हटाने के लिए आवश्यक है। यह सुनिश्चित करता है कि अधिक प्रबंधनीय भंडार आकार बनाए रखते हुए केवल आवश्यक डेटा ही रखा जाए। इन आदेशों का उपयोग करके नियमित रखरखाव रिपॉजिटरी को प्रबंधनीय सीमा से आगे बढ़ने से रोक सकता है, जिससे सुचारू माइग्रेशन और संचालन की सुविधा मिलती है।
Git से Azure माइग्रेशन के लिए सामान्य प्रश्न और समाधान
- त्रुटि "TF402462" का क्या अर्थ है?
- त्रुटि इंगित करती है कि पुश अस्वीकार कर दिया गया था क्योंकि रिपॉजिटरी का आकार Azure द्वारा लगाई गई 5120 एमबी की सीमा से अधिक है।
- मैं अपने भंडार में बड़ी फ़ाइलों की पहचान कैसे कर सकता हूँ?
- आप इसका उपयोग कर सकते हैं git rev-list --objects --all | sort -k 2 > allfiles.txt रिपॉजिटरी में सभी फ़ाइलों को सूचीबद्ध करने और सबसे बड़ी फ़ाइलों की पहचान करने का आदेश।
- Git LFS क्या है और यह कैसे मदद करता है?
- Git LFS (लार्ज फाइल स्टोरेज) Git के लिए एक एक्सटेंशन है जो आपको रिपॉजिटरी के मुख्य इतिहास से अलग बड़ी फ़ाइलों को प्रबंधित करने की अनुमति देता है, जिससे समग्र रिपॉजिटरी का आकार कम हो जाता है।
- मैं Git LFS का उपयोग करके बड़ी फ़ाइलों को कैसे ट्रैक करूं?
- उपयोग git lfs track कमांड के बाद वे फ़ाइल प्रकार आते हैं जिन्हें आप प्रबंधित करना चाहते हैं, जैसे git lfs track "*.zip" "*.tar".
- Git LFS के साथ फ़ाइलों को ट्रैक करने के बाद मुझे क्या कदम उठाने चाहिए?
- ट्रैकिंग के बाद, आपको परिवर्तन करने और चलाने की आवश्यकता है git lfs migrate import मौजूदा बड़ी फ़ाइलों को LFS में स्थानांतरित करने के लिए।
- मैं अपने भंडार का इतिहास कैसे साफ़ कर सकता हूँ?
- उपयोग git filter-repo आपके रिपॉजिटरी इतिहास से अवांछित फ़ाइलों को हटाने और उसका आकार कम करने का आदेश।
- की क्या भूमिका है git gc भंडार आकार बनाए रखने में?
- git gc कमांड अनावश्यक फ़ाइलों को साफ़ करता है और रिपॉजिटरी को अनुकूलित करता है, जो आकार को प्रबंधनीय बनाए रखने के लिए महत्वपूर्ण है।
- मुझे अपने भंडार पर रखरखाव आदेश कितनी बार चलाने चाहिए?
- नियमित रूप से, विशेष रूप से महत्वपूर्ण परिवर्तनों या माइग्रेशन से पहले और बाद में, यह सुनिश्चित करने के लिए कि रिपॉजिटरी आकार सीमा के भीतर रहे।
रिपॉजिटरी आकार प्रबंधन पर अंतिम विचार
Azure में सफल माइग्रेशन के लिए बड़े Git रिपॉजिटरी को प्रभावी ढंग से प्रबंधित करना महत्वपूर्ण है, खासकर जब आकार सीमाओं से निपटना हो। बड़ी फ़ाइलों को ट्रैक और प्रबंधित करने के लिए Git LFS जैसे टूल का उपयोग करने से रिपॉजिटरी का आकार काफी कम हो सकता है। इसके अतिरिक्त, git फ़िल्टर-रेपो जैसे कमांड के साथ इतिहास को साफ़ करना और git gc का उपयोग करके नियमित रखरखाव आपके रिपॉजिटरी को अनुकूलित और आकार सीमा के भीतर रख सकता है। इन रणनीतियों के साथ, आप TF402462 त्रुटि पर काबू पा सकते हैं और एक सुचारू माइग्रेशन प्रक्रिया सुनिश्चित कर सकते हैं।