৩.৪ গিট ব্রাঞ্চিং – ব্রাঞ্চিং এর কর্মধারা

ব্রাঞ্চিং কর্মপ্রবাহ

এখন যেহেতু আপনার কাছে ব্রাঞ্চিং এবং মার্জিং করার মৌলিক ধারণা রয়েছে, সেগুলির সাথে আপনার কি করা উচিত? এই বিভাগে, আমরা কিছু সাধারণ কর্মপ্রবাহকে কভার করার চেষ্টা করব যা lightweight ব্রাঞ্চিংকে সম্ভব করে তোলে, যাতে আপনি সিদ্ধান্ত নিতে পারেন যে আপনি সেগুলিকে আপনার নিজস্ব ডেভেলাপমেন্ট চক্রে অন্তর্ভুক্ত করতে চান কিনা।

দীর্ঘ চলমান ব্রাঞ্চসমূহ

যেহেতু গিট একটি সহজ ত্রি-মুখী মার্জ পদ্ধতি ব্যবহার করে, তাই দীর্ঘ সময়ের জন্যে একটি ব্রাঞ্চ থেকে অন্য ব্রাঞ্চে একাধিক বার মার্জ করা সাধারণত সহজ। এর অর্থ হল আপনার অনেকগুলি ব্রাঞ্চ থাকতে পারে যা সর্বদা খোলা থাকে এবং যেগুলি আপনি আপনার ডেভেলাপমেন্ট চক্রের বিভিন্ন পর্যায়ে ব্যবহার করেন; আপনি নিয়মিতভাবে তাদের মধ্যে মার্জ করতে পারেন।

অনেক গিট ডেভেলপারদের একটি ওয়ার্কফ্লো থাকে যা এই পদ্ধতিকে গ্রহণ করে, যেমন শুধুমাত্র কোড থাকা যা তাদের master ব্রাঞ্চে সম্পূর্ণ স্থিতিশীল অবস্থায় থাকে —-সম্ভবত শুধুমাত্র সেই কোড যা প্রকাশিত হয়েছে বা হবে। develop বা next নামে সমান্তরালভাবে তাদের আরেকটি ব্রাঞ্চ রয়েছে যেটি থেকে তারা কাজ করে বা স্থিতিশীলতা পরীক্ষা করতে ব্যবহার করে — এটি সর্বদা স্থিতিশীল থাকতে হবে এমন নয়, তবে যখনই এটি একটি স্থিতিশীল অবস্থায় আসে, তখন এটি master এ মার্জ হতে পারে। যখনই তারা সমস্ত টেস্টিং উত্তীর্ণ হয় এবং বাগ তৈরী না করে প্রস্তুত হয়, তখনই topic ব্রাঞ্চগুলি (স্বল্পকালীন ব্রাঞ্চ, যেমন আপনার পূর্বের iss53 ব্রাঞ্চ) পুল নিতে এটি ব্যবহৃত হয়।

বাস্তবে, আমরা আপনার করা কমিটের লাইনের দিকে নির্দেশ করা পয়েন্টারগুলির বিষয়ে কথা বলছি। স্থিতিশীল ব্রাঞ্চগুলি আপনার কমিট history লাইনের নীচে এবং bleeding-edge ব্রাঞ্চগুলি এই history লাইনের উপরের দিকে থাকে।
চিত্র-২৬ঃ progressive-stability branching এর একটি রৈখিক দৃশ্য
এগুলিকে work silos হিসাবে ভাবা সাধারণত সহজ, যেখানে কমিটের সেটগুলি সম্পূর্ণরূপে পরীক্ষা করা হলে তারা আরও স্থিতিশীল silo তে উপনীত হয়।
চিত্র-২৭ঃ progressive-stability branching এর একটি "silo” দৃশ্য
আপনি বিভিন্ন স্তরের স্থিতিশীলতার জন্য এটি চালিয়ে যেতে পারেন। কিছু বড় প্রজেক্টের একটি প্রস্তাবিত বা pu (proposed updates) ব্রাঞ্চ আছে যার সমন্বিত ব্রাঞ্চ রয়েছে যা next বা master ব্রাঞ্চে যাওয়ার জন্য প্রস্তুত নাও হতে পারে। আইডিয়াটি হল যে আপনার ব্রাঞ্চগুলি স্থিতিশীলতার বিভিন্ন স্তরে রয়েছে; যখন তারা আরও স্থিতিশীল স্তরে পৌঁছায়, তখন তারা তাদের উপরের ব্রাঞ্চে মার্জড বা একত্রিত হয়। আবার, একাধিক দীর্ঘ-চলমান ব্রাঞ্চ থাকাও কিন্তু আবশ্যক নয়, তবে এটি প্রায়শই সহায়ক, বিশেষ করে যখন আপনি খুব বড় বা জটিল প্রজেক্ট এর সাথে কাজ করছেন।

টপিক ব্রাঞ্চিং

যাইহোক, Topic branches, যে কোনো আকারের প্রজেক্টেই প্রয়োজনীয়। একটি topic branch হল একটি স্বল্পকালীন ব্রাঞ্চ যা আপনি একটি নির্দিষ্ট বৈশিষ্ট্য বা এর সাথে সম্পর্কিত কাজের জন্য তৈরি এবং ব্যবহার করেন। এটি এমন কিছু যা আপনি সম্ভবত VCS এর সাথে আগে কখনও করেননি কারণ সাধারণত এতে ব্রাঞ্চ তৈরি করা এবং মার্জ করা খুব ব্যয়বহুল। কিন্তু গিটে, দিনে সাধারণভাবে কয়েকবার ব্রাঞ্চ তৈরি করা, কাজ করা, মার্জ করা এবং মুছে ফেলা সহজ।

গত সেকশানে, এটি আপনি আপনার তৈরি করা iss53 এবং hotfix ব্রাঞ্চগুলির সাথে দেখেছেন। আপনি তাদের উপর কয়েকটি কমিট করেছেন এবং সেগুলিকে আপনার প্রধান ব্রাঞ্চে মার্জ করার পরে সরাসরি মুছে ফেলেছেন। এই কৌশলটি আপনাকে দ্রুত এবং সম্পূর্ণভাবে context-switch করতে দেয় — কারণ আপনার কাজটি silos এ বিভক্ত হয়েছে যেখানে সেই ব্রাঞ্চের সমস্ত পরিবর্তন সেই topic এর সাথে সম্পর্কিত, কোড পর্যালোচনার সময় কী ঘটেছে তা দেখা সহজ। আপনি সেখানে পরিবর্তনগুলিকে মিনিট, দিন বা মাসের জন্য রাখতে পারেন এবং সেগুলিকে যে ক্রমে তৈরি বা কাজ করা হয়েছে তা মাথায় না রেখেও, প্রস্তুত হলে সেগুলিকে মার্জ করতে পারেন৷

কিছু কাজ করার একটি উদাহরণ বিবেচনা করুন (master এ), একটি issue (iss91) এর জন্য ব্রাঞ্চ তৈরী করুন, এটিতে কিছুটা কাজ করুন, একই জিনিস (iss91v2) পরিচালনা করার অন্য উপায় চেষ্টা করার জন্য দ্বিতীয় ব্রাঞ্চ তৈরী করুন, আপনার master ব্রাঞ্চ এ ফিরে যান এবং সেখানে কিছুক্ষণ কাজ করুন, এবং তারপরে সেখানে যে কাজগুলি করা একটি ভালো পদক্ষেপ হবে কিনা সে ব্যাপারে আপনি নিশ্চিত নন, সেগুলো নিয়ে কাজ করার জন্যে একটি ব্রাঞ্চ তৈরি (dumbidea ব্রাঞ্চ) করুন। আপনার কমিটের history কিছুটা এরকম দেখাবেঃ
চিত্র-২৮ঃ বিভিন্ন টপিক ব্রাঞ্চসমূহ
এখন, ধরা যাক, আপনার issue-টির দ্বিতীয় সমাধানটি সবচেয়ে ভাল বলে আপনি সিদ্ধান্ত নিলেন (iss91v2); এবং আপনি আপনার সহকর্মীদের dumbidea ব্রাঞ্চটি দেখিয়েছেন, এবং দেখা গেল, এটিতে যথেষ্ট ভালো কাজ হয়েছে। এখন আপনি আসল iss91 ব্রাঞ্চটি ফেলে দিতে পারেন (কমিট C5 এবং C6 হারাতে পারেন) এবং অন্য দুটিতে মার্জ করতে পারেন। আপনার history তারপর এইরকম দেখায়ঃ
চিত্র-২৯ঃ dumbidea এবং iss91v2 মার্জ করার পরবর্তী history
আমরা (ডিস্ট্রিবিউটেড গিটে) আপনার গিট প্রজেক্টের জন্য বিভিন্ন সম্ভাব্য কর্মপ্রবাহ সম্পর্কে আরও বিশদভাবে জানব, তাই আপনার পরবর্তী প্রকল্পে কোন ব্রাঞ্চিং স্কিম ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার আগে, সেই অধ্যায়টি পড়তে ভুলবেন না।

মনে রাখা গুরুত্বপূর্ণ যে, আপনি যখন এই সব করছেন তখন এই ব্রাঞ্চগুলি সম্পূর্ণ স্থানীয়। আপনি যখন ব্রাঞ্চিং এবং মার্জ করছেন, তখন সবকিছু শুধুমাত্র আপনার গিট রিপোজিটরিতে করা হচ্ছে —  সার্ভারের সাথে কোন যোগাযোগ নেই।