গিটে ব্লব স্ট্রিপিং বোঝা
গিট-এ, বড় ফাইলগুলি পরিচালনা করা একটি চ্যালেঞ্জ হতে পারে, বিশেষত যখন তাদের কাজের অনুলিপিতে আর প্রয়োজন হয় না। BFG এবং Git Filter-Repo-এর মতো টুলগুলি আপনার সংগ্রহস্থলের ইতিহাস থেকে এই বড় ফাইলগুলি সরানোর জন্য সমাধান দেয়। যাইহোক, BFG-এর মতো গিট ফিল্টার-রেপোর সাথে একই ফলাফল অর্জন করা কঠিন হতে পারে।
এই নিবন্ধটি কীভাবে BFG কমান্ডের প্রতিলিপি তৈরি করতে হয় তা অন্বেষণ করে -- স্ট্রিপ-ব্লবস-এর চেয়ে বড় গিট ফিল্টার-রেপো ব্যবহার করে। আমরা সাধারণ সমস্যাগুলির সমাধান করব এবং একটি ধাপে ধাপে নির্দেশিকা প্রদান করব যাতে আপনি এখনও ব্যবহারে থাকা ফাইলগুলিকে দুর্ঘটনাক্রমে অপসারণ না করে কার্যকরভাবে আপনার সংগ্রহস্থল পরিষ্কার করতে পারেন।
আদেশ | বর্ণনা |
---|---|
from git import Repo | গিট রিপোজিটরির সাথে ইন্টারঅ্যাক্ট করতে GitPython লাইব্রেরির রেপো ক্লাস ইম্পোর্ট করে। |
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 | চিহ্নিত প্রতিটি বড় ব্লে গিট ফিল্টার-রেপো কমান্ড প্রয়োগ করতে xargs ব্যবহার করে। |
প্রদত্ত স্ক্রিপ্টগুলি কীভাবে কাজ করে
পাইথন স্ক্রিপ্ট গিট রিপোজিটরির সাথে ইন্টারঅ্যাক্ট করতে গিটপাইথন লাইব্রেরি ব্যবহার করে। সংগ্রহস্থল ব্যবহার করে আরম্ভ করা হয় from git import Repo এবং repo = Repo(repo_path), নির্দিষ্ট সংগ্রহস্থল পথ নির্দেশ করে। স্ক্রিপ্ট তারপর একটি ফিল্টার ফাংশন সংজ্ঞায়িত করে filter_large_blobs(blob) 10MB এর চেয়ে বড় ব্লব সনাক্ত করতে। এই ফিল্টার ব্যবহার করে প্রয়োগ করা হয় RepoFilter(repo).filter_blobs(filter_large_blobs), যা নিশ্চিত করে যে আকারের সীমা অতিক্রমকারী ব্লবগুলি সংগ্রহস্থলের ইতিহাস থেকে মুছে ফেলা হয়েছে।
শেল স্ক্রিপ্ট গিট কমান্ড এবং শেল ইউটিলিটি ব্যবহার করে একই লক্ষ্য অর্জন করে। এটি এর সাথে সংগ্রহস্থল ডিরেক্টরিতে নেভিগেট করে 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)
শেল স্ক্রিপ্ট ব্যবহার করে বড় গিট ব্লব শনাক্ত করা এবং অপসারণ করা
গিটে ব্লব পরিচালনার জন্য শেল স্ক্রিপ্টিং
#!/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 আইটেমগুলির একটি তালিকায় কমান্ড প্রয়োগ করতে সাহায্য করে, যেমন অপসারণের জন্য চিহ্নিত বড় ব্লব।
গিট ব্লব ম্যানেজমেন্টের চূড়ান্ত চিন্তাভাবনা
কার্যক্ষমতা এবং স্টোরেজ অপ্টিমাইজ করার জন্য একটি গিট সংগ্রহস্থলে কার্যকরীভাবে বড় ফাইলগুলি পরিচালনা করা অপরিহার্য। বিএফজি এবং গিট ফিল্টার-রেপোর মতো সরঞ্জামগুলি ব্যবহার করা এই প্রক্রিয়াটিকে স্ট্রিমলাইন করতে সহায়তা করে, যদিও প্রতিটিরই অনন্য কমান্ড এবং পদ্ধতি রয়েছে। উন্নত বিকল্পগুলি ব্যবহার করে এবং প্রতিটি টুলের সূক্ষ্মতা বোঝার মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে আপনার সংগ্রহস্থলটি পরিষ্কার এবং দক্ষ থাকবে। ডেটা ক্ষতি এড়াতে উল্লেখযোগ্য পরিবর্তন করার আগে সর্বদা আপনার সংগ্রহস্থলের ব্যাকআপ নিতে ভুলবেন না। কৌশলগত পরিকল্পনার সাথে এই সরঞ্জামগুলির জ্ঞানের সমন্বয় আপনার সংস্করণ নিয়ন্ত্রণ অনুশীলনগুলিকে উল্লেখযোগ্যভাবে উন্নত করবে।