GitHub তাদের স্ট্যাকড পুল রিকোয়েস্ট (stacked pull requests) ফিচারটিকে পাবলিক প্রিভিউতে নিয়ে এসেছে, যা ডেভেলপারদের একটি বড় পরিবর্তনকে নির্ভরশীল PR-এর একটি চেইনে বিভক্ত করার সুযোগ করে দেবে। এর ফলে প্রতিটি PR আলাদাভাবে রিভিউ এবং মার্জ করা সম্ভব হবে।

কেন এই ফিচারটি গুরুত্বপূর্ণ

একটি একক, বিশাল বা মনোলিথিক PR প্রায়শই এক মাসের দীর্ঘ রিভিউতে পরিণত হয়, যেখানে রিভিউয়ারদের অপ্রাসঙ্গিক কোড ঘেঁটে দেখতে হয়। যখন বেস ব্রাঞ্চ পরিবর্তিত হয়, তখন এই বিশাল পরিবর্তনগুলোতে মার্জ কনফ্লিক্ট (merge conflict) হওয়ার সম্ভাবনা থাকে, যা রিলিজ প্রক্রিয়াকে আটকে দেয়। স্ট্যাকড PR এই দুটি সমস্যারই সমাধান করে; এটি একটি বড় ডিফ (diff)-কে কতগুলো ছোট এবং সুনির্দিষ্ট ডিফ-এর সিরিজে রূপান্তর করে, যেখানে প্রতিটি ডিফ তার আগেরটির ওপর ভিত্তি করে তৈরি হয়।

এটি কীভাবে কাজ করে

প্রথমে মেইন ব্রাঞ্চের বিপরীতে প্রথম PR-টি তৈরি করুন, তারপর পরবর্তী PR-টিকে প্রথমটির ওপর ভিত্তি করে, তৃতীয়টিকে দ্বিতীয়টির ওপর ভিত্তি করে—এভাবে সাজান। GitHub স্বয়ংক্রিয়ভাবে এই সম্পর্কগুলো ট্র্যাক করে: আপনি যদি বেস PR সংশোধন করেন, তবে নির্ভরশীল PR-গুলো নতুন অবস্থা অনুযায়ী আপডেট হয়ে যাবে। রিভিউয়াররা একটি মাত্র ক্লিকের মাধ্যমে পুরো স্ট্যাকটি অ্যাপ্রুভ করতে পারেন অথবা প্রতিটি লেয়ার আলাদাভাবেও অনুমোদন করতে পারেন।

  • রিভিউ একটি নির্দিষ্ট সীমার মধ্যে থাকে, ফলে ফিডব্যাক দ্রুত পাওয়া যায়।
  • কনফ্লিক্ট কমে যায় কারণ প্রতিটি PR শুধুমাত্র তার নিজস্ব লেয়ারের কোড পরিবর্তন করে।
  • UI স্ট্যাকের হায়ারার্কি (hierarchy) দেখায় এবং GitHub CLI ব্যবহার করে মাত্র একটি কমান্ডের মাধ্যমে স্ট্যাকড PR-এর একটি সিরিজ তৈরি করা সম্ভব।
gh pr create --title Feature A --base main
gh pr create --title Feature B --base feature-a
gh pr create --title Feature C --base feature-b

কমান্ড লাইনের এই উদাহরণটি তিনটি লিঙ্কড PR তৈরি করে, যার প্রতিটি তার আগেরটির ওপর নির্ভরশীল। একই ওয়ার্কফ্লো ওয়েব ইন্টারফেসের মাধ্যমেও ব্যবহার করা সম্ভব, যেখানে আপনি অন্যগুলোর ক্ষতি না করেই স্ট্যাক থেকে কোনো PR-এর ক্রম পরিবর্তন করতে বা কোনোটি বাদ দিতে পারেন।

কাদের এতে সুবিধা হবে

বড় ফিচার টিম এবং ওপেন-সোর্স মেইনটেইনাররা রিভিউয়ারদের অপ্রাসঙ্গিক পরিবর্তনের ঝামেলায় না ফেলে ধাপে ধাপে কাজ শিপ করতে পারবেন। রিলিজ ম্যানেজাররা বুঝতে পারবেন কোন অংশটি শিপ করার জন্য প্রস্তুত, কারণ প্রতিটি স্ট্যাক লেয়ার তার নিজস্ব সময়সূচী অনুযায়ী মার্জ করা যেতে পারে।

বিবেচ্য বিষয় বা সতর্কতা

ফিচারটি এখনও প্রিভিউ পর্যায়ে রয়েছে, তাই পূর্ণাঙ্গ রিলিজের আগে এটি পরিবর্তিত হতে পারে। টিমগুলোকে ব্রাঞ্চিং সংক্রান্ত নতুন অভ্যাস রপ্ত করতে হবে এবং কোনো স্ট্যাক আংশিকভাবে মার্জ করার পর সেটি রিব্যাস (rebasing) করার সময় কিছু জটিল পরিস্থিতির (edge cases) সম্মুখীন হতে পারে। ডকুমেন্টেশন এখনও তৈরি হচ্ছে, তাই শুরুর দিকের ব্যবহারকারীদের UI সংকেতগুলো বুঝতে কিছুটা অতিরিক্ত সময় ব্যয় করতে হতে পারে।

পরবর্তীতে কী লক্ষ্য করবেন

GitHub সম্ভবত কোড-ওনার (code-owners) এবং অটোমেশন টুলসগুলোর সাথে আরও নিবিড় ইন্টিগ্রেশন আনবে এবং কনফ্লিক্ট কমার মেট্রিক্স প্রকাশ করতে পারে। GA (general availability) বা সাধারণ ব্যবহারের সময়সূচী সম্পর্কে জানতে প্রিভিউ অ্যানাউন্সমেন্ট পেজটি নজরে রাখুন।

সারকথা: স্ট্যাকড পুল রিকোয়েস্ট ডেভেলপারদের বিশাল পরিবর্তনগুলোকে নিয়ন্ত্রণ করার একটি বাস্তবসম্মত উপায় দেয়, যা একটি একক এবং কনফ্লিক্ট-সমৃদ্ধ PR-কে একটি সহজবোধ্য ও রিভিউ-বান্ধব সিকোয়েন্সে রূপান্তর করে। আপনার ওয়ার্কফ্লো যদি দীর্ঘ রিভিউ এবং মার্জ করার ঝামেলায় জর্জরিত হয়, তবে এই প্রিভিউটি ট্রায়াল হিসেবে ব্যবহার করে দেখা বুদ্ধিমানের কাজ হবে।