ক্লোনিং সাবডিরেক্টরি: একটি দ্রুত ওভারভিউ
Git এর সাথে সংস্করণ নিয়ন্ত্রণ পরিচালনা করার সময়, SVN এর মতো পুরানো সিস্টেমের তুলনায় বিভিন্ন পরিস্থিতিতে বিভিন্ন পদ্ধতির প্রয়োজন হয়। বিশেষত, বিভিন্ন উন্নয়ন কর্মপ্রবাহের জন্য একটি সংগ্রহস্থলের সাবডিরেক্টরিগুলিকে বেছে বেছে ক্লোন করার ক্ষমতা অত্যন্ত গুরুত্বপূর্ণ হতে পারে। এই বৈশিষ্ট্যটি বিশেষভাবে উপযোগী যখন প্রকল্পের কাঠামো জটিল হয় বা যখন আপনার শুধুমাত্র একটি সংগ্রহস্থলের একটি অংশ নিয়ে কাজ করতে হয়।
এসভিএন-এ, একটি সংগ্রহস্থল থেকে বিভিন্ন অবস্থানে সাবডিরেক্টরি চেকআউট করা সহজ ছিল। যাইহোক, গিট রিপোজিটরি ডেটা ভিন্নভাবে পরিচালনা করে, যা 'svn co'-এর মতো SVN কমান্ডের সরাসরি সমতুল্য করে তোলে। এই গাইডটি অন্বেষণ করবে কিভাবে গিট স্পার্স চেকআউট এবং অন্যান্য কৌশল ব্যবহার করে অনুরূপ ফলাফল অর্জন করতে পারে।
| আদেশ | বর্ণনা |
|---|---|
| git init | সমস্ত প্রয়োজনীয় মেটাডেটা সহ প্রাথমিক .git ডিরেক্টরি তৈরি করে একটি নতুন গিট সংগ্রহস্থল শুরু করে। |
| git remote add -f | আপনার গিট কনফিগারেশনে একটি নতুন রিমোট রিপোজিটরি যোগ করে এবং অবিলম্বে এটি নিয়ে আসে। |
| git config core.sparseCheckout true | স্পার্স-চেকআউট বৈশিষ্ট্য সক্ষম করে, যা একটি সংগ্রহস্থলের আংশিক চেকআউটের অনুমতি দেয়। |
| echo "finisht/*" >> .git/info/sparse-checkout | কোন সাবডিরেক্টরি চেক আউট করতে হবে তা নির্ধারণ করতে স্পার্স-চেকআউট কনফিগারেশন ফাইলে পাথ 'finisht/*' যুক্ত করে। |
| git pull origin master | 'অরিজিন' রিমোট থেকে 'মাস্টার' শাখাকে টেনে আনে, শুধুমাত্র নির্দিষ্ট সাবডিরেক্টরিগুলি পুনরুদ্ধার করতে স্পার্স-চেকআউট নিয়ম ব্যবহার করে। |
| git sparse-checkout set | কর্মরত ডিরেক্টরির মধ্যে যে পাথগুলি তৈরি করা উচিত তা কনফিগার করে। |
গিট স্পারস চেকআউট এবং স্ক্রিপ্ট ওয়ার্কফ্লো ব্যাখ্যা করা
প্রদত্ত স্ক্রিপ্টগুলি একটি গিট সংগ্রহস্থল থেকে নির্দিষ্ট সাবডিরেক্টরি ক্লোন করার জন্য ডিজাইন করা হয়েছে, SVN এর সাথে পূর্বে উপলব্ধ আচরণের অনুকরণ করে। পরিবেশে যেখানে একটি সংগ্রহস্থলের শুধুমাত্র কিছু অংশের প্রয়োজন হয়, এটি উল্লেখযোগ্যভাবে আনা ডেটা কমাতে পারে, দক্ষতা উন্নত করে। প্রথম স্ক্রিপ্ট এর সংমিশ্রণ ব্যবহার করে git init, git remote add -f, এবং git config core.sparseCheckout true একটি নতুন গিট রিপোজিটরি শুরু করতে, একটি দূরবর্তী উত্স যোগ করুন এবং স্পার্স চেকআউট সক্ষম করুন যা সংগ্রহস্থলের বিষয়বস্তুর নির্বাচনী ক্লোনিংয়ের অনুমতি দেয়।
পরবর্তীকালে, 'finisht/*'-এর মতো পাথগুলি স্পার্স-চেকআউট কনফিগারেশনে যোগ করা হয় echo কমান্ড, গিটকে শুধুমাত্র সেই নির্দিষ্ট ডিরেক্টরি আনতে নির্দেশ করে। আদেশ git pull origin master দূরবর্তী সংগ্রহস্থলের মাস্টার শাখা থেকে শুধুমাত্র কনফিগার করা সাবডিরেক্টরিগুলিকে টেনে আনতে ব্যবহৃত হয়। দ্বিতীয় স্ক্রিপ্ট লিভারেজ git sparse-checkout set কমান্ড, সাম্প্রতিক গিট সংস্করণগুলিতে প্রবর্তিত একটি আরও সুবিন্যস্ত পদ্ধতি যা সরাসরি নির্দেশিকা পাথগুলি নির্দিষ্ট করা সহজ করে, যা চেক আউট করা হয় তার উপর স্বচ্ছতা এবং নিয়ন্ত্রণ বাড়ায়।
গিট রিপোজিটরিতে ক্লোনিংয়ের জন্য সাবডিরেক্টরিগুলি আলাদা করা
ব্যাশ এবং গিট কমান্ড ব্যবহার করা
mkdir specific-dir-clonecd specific-dir-clonegit initgit remote add -f origin https://your-repository-url.gitgit config core.sparseCheckout trueecho "finisht/*" >> .git/info/sparse-checkoutgit pull origin mastercd ..mkdir another-specific-dircd another-specific-dirgit initgit remote add -f origin https://your-repository-url.gitgit config core.sparseCheckout trueecho "static/*" >> .git/info/sparse-checkoutgit pull origin master
Git-এ সাবডিরেক্টরির জন্য স্পারস চেকআউট বাস্তবায়ন করা
গিট স্পারস-চেকআউট বৈশিষ্ট্য ব্যবহার করে
git clone --filter=blob:none --no-checkout https://your-repository-url.git repo-dircd repo-dirgit sparse-checkout init --conegit sparse-checkout set finishtgit checkoutcd ..git clone --filter=blob:none --no-checkout https://your-repository-url.git another-repo-dircd another-repo-dirgit sparse-checkout init --conegit sparse-checkout set staticgit checkout
ডিরেক্টরি-নির্দিষ্ট অপারেশনের জন্য গিট-এ উন্নত প্রযুক্তি
Git-এ সাবডিরেক্টরি ক্লোন করার প্রাথমিক পদ্ধতিগুলি ছাড়াও, এমন উন্নত কৌশল রয়েছে যা আরও অপ্টিমাইজ করতে পারে যে কীভাবে বিকাশকারীরা অনেকগুলি প্রকল্পের সাথে বড় সংগ্রহস্থলগুলি পরিচালনা করে। এই ধরনের একটি পদ্ধতি ব্যবহার জড়িত git submodule. এই কমান্ডটি একটি গিট রিপোজিটরিকে অন্যান্য গিট রিপোজিটরিগুলিকে সাবমডিউল হিসাবে অন্তর্ভুক্ত করার অনুমতি দেয়, যা প্যারেন্টের সাথে ক্লোন করা যেতে পারে তবে আলাদাভাবে রক্ষণাবেক্ষণ করা যেতে পারে। এটি বিশেষভাবে উপযোগী যখন একটি সংগ্রহস্থলের বিভিন্ন অংশকে আলাদা করা প্রয়োজন কিন্তু তারপরও একটি কেন্দ্রীয় সংগ্রহস্থল থেকে নিয়ন্ত্রণ করা হয়।
আরেকটি উন্নত বৈশিষ্ট্য ব্যবহার করা হয় git filter-branch একত্রে বা মিশ্রিত git subtree. এই সংমিশ্রণটি আপনাকে একটি নতুন, পৃথক গিট সংগ্রহস্থলে একটি সাবডিরেক্টরি বের করার অনুমতি দেয় যখন এর ইতিহাস সংরক্ষণ করে। এটি এমন পরিস্থিতিগুলির জন্য আদর্শ যেখানে একটি প্রকল্প তার নিজস্ব সত্তায় বৃদ্ধি পায় এবং এর ঐতিহাসিক প্রেক্ষাপট না হারিয়ে মূল ভাণ্ডার থেকে দূরে সরে যেতে হবে।
প্রয়োজনীয় গিট সাবডিরেক্টরি ম্যানেজমেন্ট FAQs
- আমি কি একটি গিট সংগ্রহস্থল থেকে শুধুমাত্র একটি ডিরেক্টরি ক্লোন করতে পারি?
- হ্যাঁ, যেমন কমান্ড ব্যবহার করে git sparse-checkout অথবা শুধুমাত্র সেই ডিরেক্টরির বিষয়বস্তু সহ একটি পৃথক শাখা তৈরি করা।
- Git এ স্পারস চেকআউট কি?
- স্পারস চেকআউট আপনাকে সম্পূর্ণ প্রজেক্ট ডাউনলোড না করে একটি সংগ্রহস্থল থেকে নির্দিষ্ট ফোল্ডার বা ফাইলগুলিকে বেছে বেছে পরীক্ষা করতে দেয়।
- আমি কিভাবে একটি সাবডিরেক্টরির জন্য একটি সাবমডিউল ব্যবহার করব?
- সাথে সাবমডিউল যোগ করুন git submodule add পছন্দসই সংগ্রহস্থল এবং পথ নির্দেশ করে।
- আমি কি একটি নতুন সংগ্রহস্থলে একটি সাবডিরেক্টরি আলাদা করতে পারি?
- হ্যাঁ, ব্যবহার করে git subtree split শুধুমাত্র সাবডিরেক্টরির ইতিহাস সহ একটি নতুন শাখা তৈরি করতে, যা তারপর ক্লোন করা যেতে পারে।
- গিট সাবমডিউল এবং গিট সাবট্রির মধ্যে পার্থক্য কী?
- সাবমডিউলগুলি নির্ভরতা হিসাবে আপনার প্রকল্পে পৃথক সংগ্রহস্থলগুলিকে লিঙ্ক করে, যেখানে সাবট্রিগুলি এটিকে বিভক্ত করার ক্ষমতা সহ আপনার প্রকল্পে অন্য একটি সংগ্রহস্থলকে একত্রিত করে।
গিটে ডিরেক্টরি-নির্দিষ্ট ক্লোনিংয়ের চূড়ান্ত চিন্তাভাবনা
যদিও গিট পৃথক ডিরেক্টরিগুলির জন্য SVN-এর চেকআউটের সমতুল্য একটি সরাসরি কমান্ড প্রদান করে না, স্পার্স চেকআউট, সাবমডিউল এবং সাবট্রি কৌশলগুলির ব্যবহার শক্তিশালী বিকল্পগুলি অফার করে। এই পদ্ধতিগুলি শুধুমাত্র প্রতিলিপি করে না কিন্তু প্রায়শই পুরানো সংস্করণ নিয়ন্ত্রণ সিস্টেম দ্বারা প্রদত্ত কার্যকারিতা বৃদ্ধি করে। SVN থেকে রূপান্তরিত বা Git-এর মধ্যে জটিল প্রকল্পগুলি পরিচালনা করা বিকাশকারীদের জন্য, এই কৌশলগুলি আয়ত্ত করা তাদের উন্নয়ন প্রক্রিয়াকে উল্লেখযোগ্যভাবে প্রবাহিত করতে পারে।