Azure Repository سائز کی حدوں پر قابو پانا
گٹ ریپوزٹری کو Azure میں منتقل کرنے سے بعض اوقات چیلنجز کا سامنا کرنا پڑ سکتا ہے، خاص طور پر جب بڑے ریپوزٹری سائزز سے نمٹ رہے ہوں۔ ایک عام غلطی، "TF402462 دھکا مسترد کر دیا گیا کیونکہ سائز 5120 MB سے بڑا تھا" غیر متوقع طور پر اس عمل کو روک سکتا ہے۔ یہ مسئلہ اکثر بڑی فائلوں یا .git ڈائرکٹری میں تاریخ کی وجہ سے پیدا ہوتا ہے۔
اس مضمون میں، ہم اس مسئلے کو حل کرنے کے لیے اقدامات کا جائزہ لیں گے، بشمول بڑی فائلوں کو مؤثر طریقے سے منظم کرنے کے لیے Git LFS (Large File Storage) کا استعمال۔ وجوہات کو سمجھ کر اور صحیح حل پر عمل درآمد کر کے، آپ سائز کی حد سے تجاوز کیے بغیر اپنے ذخیرے کو کامیابی سے Azure میں منتقل کر سکتے ہیں۔
کمانڈ | تفصیل |
---|---|
git lfs install | ریپوزٹری میں گٹ لارج فائل اسٹوریج (LFS) کو شروع کرتا ہے۔ |
git lfs track | Git LFS کے ساتھ مخصوص فائل کی اقسام کو ٹریک کرتا ہے، ذخیرہ کے سائز پر ان کے اثرات کو کم کرتا ہے۔ |
git lfs migrate import | Git LFS کے زیر انتظام بڑی فائلوں کو درآمد اور منتقل کرتا ہے۔ |
git filter-repo | کمٹ ہسٹری سے بڑی فائلوں کو ہٹانے کے لیے ریپوزٹری کو فلٹر کرتا ہے۔ |
git gc --prune=now | ریپوزٹری کے سائز کو کم کرنے کے لیے کچرا جمع کرتا ہے اور غیر ضروری فائلوں کو کاٹتا ہے۔ |
git push --mirror | تمام refs (شاخوں، ٹیگز) کو ایک ذخیرہ سے دوسرے میں دھکیلتا ہے۔ |
Azure Migration کے لیے اسکرپٹ کو سمجھنا
پہلی اسکرپٹ آپ کے ذخیرے میں بڑی فائلوں کو ہینڈل کرنے کے لیے Git LFS (Large File Storage) کے استعمال پر مرکوز ہے۔ یہ 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 کا استعمال
فائل مائیگریشن کے لیے گٹ باش اسکرپٹ
# 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
کامیاب Azure ہجرت کے لیے مخزن کا سائز کم کرنا
ذخیرہ کرنے اور صاف کرنے کے لیے ازگر کا اسکرپٹ
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 to Azure Migration کے لیے عام سوالات اور حل
- غلطی "TF402462" کا کیا مطلب ہے؟
- خرابی ظاہر کرتی ہے کہ پش کو مسترد کر دیا گیا تھا کیونکہ ریپوزٹری کا سائز Azure کی طرف سے لگائی گئی 5120 MB حد سے زیادہ ہے۔
- میں اپنے ذخیرے میں بڑی فائلوں کی شناخت کیسے کرسکتا ہوں؟
- آپ استعمال کر سکتے ہیں۔ git rev-list --objects --all | sort -k 2 > allfiles.txt ریپوزٹری میں تمام فائلوں کی فہرست بنانے اور سب سے بڑی فائلوں کی شناخت کرنے کا حکم۔
- Git LFS کیا ہے اور یہ کیسے مدد کرتا ہے؟
- Git LFS (Large File Storage) 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 LFS جیسے ٹولز کا استعمال ذخیرہ کے سائز کو نمایاں طور پر کم کر سکتا ہے۔ مزید برآں، git filter-repo جیسی کمانڈز کے ساتھ تاریخ کو صاف کرنا اور git gc کا استعمال کرتے ہوئے باقاعدہ دیکھ بھال آپ کے ذخیرے کو بہتر اور سائز کی حدود میں رکھ سکتی ہے۔ ان حکمت عملیوں کے ساتھ، آپ TF402462 کی خرابی پر قابو پا سکتے ہیں اور منتقلی کے ایک ہموار عمل کو یقینی بنا سکتے ہیں۔