Release Branch হল Git Flow-এ একটি ব্রাঞ্চ যা ডিপ্লয়মেন্টের জন্য একটি নির্দিষ্ট রিলিজ প্রস্তুত করতে develop থেকে তৈরি করা হয়। এতে অ্যাপ্লিকেশনের ভার্সন ফিক্স করা হয়, শেষ বাগগুলি ঠিক করা হয় এবং মেটাডেটা আপডেট করা হয় — নতুন ফিচার যোগ না করেই। Vincent Driessen, 2010-এর মতে, রিলিজ ব্রাঞ্চ বর্তমান ডেভেলপমেন্ট থেকে রিলিজ প্রস্তুতিকে আলাদা করে, যা উভয় কার্যকলাপকে সমান্তরালভাবে চালানোর অনুমতি দেয়।
মূল পয়েন্ট
release/X.Y.Z অ্যাপ ভার্সন অনুযায়ী।Release Branch (রিলিজ ব্রাঞ্চ) হল Git Flow-এ একটি অস্থায়ী ব্রাঞ্চ, যা develop থেকে তৈরি করা হয় যখন টিম সিদ্ধান্ত নেয় যে ফিচারগুলির বর্তমান সেট রিলিজের জন্য প্রস্তুত। এটি ঠিক ততক্ষণ বিদ্যমান থাকে যতক্ষণ চূড়ান্ত রিলিজ প্রস্তুতি নেয় — কয়েক ঘন্টা থেকে কয়েক দিন পর্যন্ত।
রিলিজ ব্রাঞ্চের মূল উদ্দেশ্য হল পরবর্তী ভার্সনগুলির উন্নয়ন না থামিয়ে রিলিজের জন্য ফিচারগুলির একটি নির্দিষ্ট সেট ফ্রিজ করা। যখন রিলিজ ব্রাঞ্চ ডিপ্লয়মেন্টের জন্য প্রস্তুত করা হচ্ছে, অন্যান্য ডেভেলপাররা পরবর্তী রিলিজের জন্য develop-এ ফিচার ব্রাঞ্চ মার্জ করা চালিয়ে যেতে পারেন।
রিলিজ ব্রাঞ্চে কোনও নতুন ফিচার তৈরি করা হয় না — শুধুমাত্র বাগ ফিক্স, অ্যাপ ভার্সন আপডেট, লোকালাইজেশন এবং ডকুমেন্টেশন। সমস্ত কাজ শেষ হওয়ার পর, রিলিজ ব্রাঞ্চ main-এ (রিলিজ হিসাবে চিহ্নিত) এবং develop-এ (যাতে বাগফিক্স ভবিষ্যতের ভার্সনে পৌঁছায়) মার্জ করা হয়।
Atlassian, 2024-এর মতে, নিয়মিত রিলিজ চক্রের প্রকল্পগুলির জন্য রিলিজ ব্রাঞ্চ অত্যন্ত গুরুত্বপূর্ণ — এগুলি রিলিজ প্রক্রিয়ার পূর্বাভাসযোগ্যতা এবং স্থিতিশীলতা নিশ্চিত করে।
রিলিজ ব্রাঞ্চের জীবনচক্র তৈরি থেকে মুছে ফেলা পর্যন্ত বেশ কয়েকটি ধাপ অন্তর্ভুক্ত করে। প্রতিটি ধাপ বোঝা টিমকে কর্ম সমন্বয় করতে এবং ভুল এড়াতে সাহায্য করে।
release/2.5.0 নামে একটি ব্রাঞ্চ তৈরি করা হয়। develop পরবর্তী ভার্সনের জন্য ফিচার ব্রাঞ্চ গ্রহণ করতে থাকে।v2.5.0।ধাপ ৬ — develop-এ ফিরতি মার্জ — প্রায়ই ভুলে যাওয়া হয়, কিন্তু এটি অত্যন্ত গুরুত্বপূর্ণ। এটি ছাড়া, রিলিজে করা বাগফিক্স develop-এ পৌঁছাবে না, এবং পরবর্তী রিলিজে একই ত্রুটিগুলি আবার দেখা দিতে পারে।
রিলিজ ব্রাঞ্চের জীবনকাল রিলিজের জটিলতা এবং develop-এ কোডের গুণমানের উপর নির্ভর করে। গড়ে, একটি মাঝারি আকারের মোবাইল অ্যাপ্লিকেশনের জন্য প্রস্তুতিতে ২ থেকে ৫ কার্যদিবস লাগে।
রিলিজ ব্রাঞ্চে কঠোরভাবে সীমিত কাজের সেট সম্পাদিত হয়। এই তালিকা থেকে কোনও বিচ্যুতি Git Flow মডেল লঙ্ঘন করে এবং রিলিজ স্থিতিশীলতার জন্য ঝুঁকি তৈরি করে।
| পরিবর্তনের ধরন | অনুমোদিত | উদাহরণ |
|---|---|---|
| ভার্সনিং | হ্যাঁ | build.gradle-এ versionName আপডেট |
| বাগফিক্স | হ্যাঁ | স্টার্টআপে ক্র্যাশ ঠিক করা |
| লোকালাইজেশন | হ্যাঁ | নতুন স্ক্রিনের জন্য অনুবাদ যোগ |
| ডকুমেন্টেশন | হ্যাঁ | CHANGELOG এবং README আপডেট |
| নতুন ফিচার | না | নতুন প্রোফাইল স্ক্রিন যোগ |
| রিফ্যাক্টরিং | না | নেটওয়ার্ক লেয়ার পুনর্লিখন |
| লাইব্রেরি আপডেট | সতর্কতা | শুধুমাত্র বাগফিক্সের জন্য patch ভার্সন |
নতুন ফিচার নিষিদ্ধ নিয়মটি রিলিজ ব্রাঞ্চে সবচেয়ে গুরুত্বপূর্ণ। যদি কোনও ফিচার রিলিজের জন্য সময়মতো না তৈরি হয়, তবে এটি পরবর্তী চক্রের জন্য অপেক্ষা করে। রিলিজ ব্রাঞ্চে অসম্পূর্ণ ফিচার ঠেলে দেওয়ার চেষ্টা সময়সীমা মিস এবং প্রোডাকশনে বাগের প্রধান কারণ।
রিলিজ ব্রাঞ্চে অ্যাপ্লিকেশন ভার্সন নম্বর বাধ্যতামূলকভাবে আপডেট করা হয়। Android-এর জন্য, এগুলি হল build.gradle-এ versionCode এবং versionName ফিল্ড; iOS-এর জন্য — Info.plist-এ CFBundleShortVersionString।
// build.gradle (অ্যাপ-লেভেল) — রিলিজ ব্রাঞ্চে ভার্সন আপডেট
android {
defaultConfig {
versionCode 42
versionName "2.5.0"
}
}
// iOS-এর জন্য — Info.plist আপডেট
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42
নতুন ডেভেলপাররা প্রায়ই release এবং hotfix ব্রাঞ্চকে গুলিয়ে ফেলেন, যদিও তাদের উদ্দেশ্য মৌলিকভাবে আলাদা। ভুল ব্রাঞ্চ ধরন নির্বাচন করা একটি গুরুতর সংশোধন বিলম্বিত করতে পারে বা রিলিজ প্রক্রিয়া ব্যাহত করতে পারে।
যদি রিলিজ প্রস্তুতির সময় (রিলিজ ব্রাঞ্চে) বাগ পাওয়া যায় — এটি সাধারণ বাগফিক্স। যদি প্রোডাকশনে (main-এ) বাগ পাওয়া যায় — এটি hotfix, এবং এটি main থেকে তৈরি হয়, এমনকি যদি রিলিজ ব্রাঞ্চ ইতিমধ্যে বিদ্যমান থাকে।
একীভূত রিলিজ ব্রাঞ্চ নামকরণ মান রিপোজিটরি নেভিগেশন সহজ করে এবং CI/CD সিস্টেমকে স্বয়ংক্রিয়ভাবে সনাক্ত করতে দেয় যে একটি ব্রাঞ্চ রিলিজ প্রক্রিয়ার সাথে সম্পর্কিত।
release/2.5.0।release/merlin।release/2024-12-01।release/X.Y.Z ফরম্যাটটি পছন্দের, কারণ এটি ব্রাঞ্চকে সরাসরি ভার্সন নম্বরের সাথে সংযুক্ত করে যা রিলিজকে বরাদ্দ করা হবে। এটি CI/CD স্ক্রিপ্ট দ্বারা অনুসন্ধান এবং স্বয়ংক্রিয় প্রক্রিয়াকরণ সহজ করে।
রিলিজ ব্রাঞ্চের develop-এ ফিরতি মার্জ (merge back) সবচেয়ে গুরুত্বপূর্ণ এবং একইসাথে সবচেয়ে বেশি উপেক্ষিত অপারেশনগুলির মধ্যে একটি। এটি ছাড়া, রিলিজে করা সমস্ত বাগফিক্স শুধুমাত্র রিলিজ ভার্সনে থেকে যায় এবং পরবর্তী রিলিজ চক্রে পৌঁছায় না।
ফিরতি মার্জ প্রক্রিয়া রিলিজ ব্রাঞ্চ main-এ মার্জ হওয়ার পরে সম্পাদিত হয়। প্রথমে release develop-এ মার্জ করা হয়, তারপর মুছে ফেলা হয়। এটি নিশ্চিত করে যে develop-এ রিলিজ প্রস্তুতির সময় করা সমস্ত সংশোধন অন্তর্ভুক্ত রয়েছে।
ফিরতি মার্জের পরে দ্বন্দ্ব সম্ভব — বিশেষত যদি develop-এ ইতিমধ্যে নতুন ফিচার ব্রাঞ্চ দেখা দেয় যা একই ফাইলগুলি পরিবর্তন করেছিল। রিলিজের জন্য দায়ী ডেভেলপার এই দ্বন্দ্বগুলি সমাধান করে এবং develop সার্ভারে push করে।
কিছু টিম ইতিহাস রৈখিক রাখতে মার্জের পরিবর্তে ফিরতি মার্জের জন্য rebase ব্যবহার করে। তবে, develop-এর জন্য মার্জ নিরাপদ, কারণ এটি কমিট ইতিহাস পুনর্লিখন করে না যা ইতিমধ্যে অন্যান্য ডেভেলপারদের দ্বারা ব্যবহৃত হচ্ছে।
আসুন মোবাইল অ্যাপ্লিকেশন ভার্সন 2.5.0-এর সফল রিলিজের পরে রিলিজ ব্রাঞ্চের সাথে কাজ করার সম্পূর্ণ চক্র দেখি: তৈরি থেকে মুছে ফেলা পর্যন্ত।
# 1. develop থেকে রিলিজ ব্রাঞ্চ তৈরি করুন
git checkout develop
git pull origin develop
git checkout -b release/2.5.0
# 2. ভার্সন এবং বাগফিক্স আপডেট করুন
git add build.gradle
git commit -m "Bump version to 2.5.0"
# 3. বাগ ঠিক করুন (শুধুমাত্র bugfixes)
git add src/fix/
git commit -m "Fix crash on payment screen"
# 4. রিলিজ ব্রাঞ্চ সার্ভারে পাঠান
git push origin release/2.5.0
# 5. release main-এ মার্জ করুন
git checkout main
git pull origin main
git merge --no-ff release/2.5.0
git tag -a v2.5.0 -m "Release 2.5.0"
git push origin main --tags
# 6. develop-এ ফিরতি মার্জ করুন
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop
# 7. রিলিজ ব্রাঞ্চ মুছুন
git branch -d release/2.5.0
git push origin --delete release/2.5.0
কমান্ড ৫ এবং ৬ — ডাবল মার্জ — অত্যন্ত গুরুত্বপূর্ণ। প্রথমে main রিলিজ কোড এবং ট্যাগ পায়, তারপর develop রিলিজের বাগফিক্সের সাথে সিঙ্ক্রোনাইজ হয়। যদি ধাপ ৬ বাদ দেওয়া হয়, রিলিজের সংশোধনগুলি পরবর্তী উন্নয়ন চক্রে পৌঁছাবে না।
নিয়মিত রিলিজযুক্ত মোবাইল প্রকল্পগুলির জন্য, রিলিজ ব্রাঞ্চ তৈরি এবং ভার্সন আপডেটের প্রক্রিয়া CI/CD স্ক্রিপ্টের মাধ্যমে স্বয়ংক্রিয় করা যেতে পারে। GitHub Actions একটি ওয়ার্কফ্লো তৈরি করতে দেয় যা বাটন চাপলে স্বয়ংক্রিয় ভার্সন আপডেট সহ রিলিজ ব্রাঞ্চ তৈরি করে।
নিয়মিত রিলিজযুক্ত মোবাইল প্রকল্পগুলির জন্য, রিলিজ ব্রাঞ্চ তৈরি এবং ভার্সন আপডেটের প্রক্রিয়া CI/CD স্ক্রিপ্টের মাধ্যমে স্বয়ংক্রিয় করা যেতে পারে। GitHub Actions একটি ওয়ার্কফ্লো তৈরি করতে দেয় যা বাটন চাপলে স্বয়ংক্রিয় ভার্সন আপডেট সহ রিলিজ ব্রাঞ্চ তৈরি করে।
# GitHub Actions — রিলিজ ব্রাঞ্চ তৈরির স্বয়ংক্রিয়করণ
name: Create Release Branch
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g. 2.5.0)'
required: true
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Create release branch
run: |
git checkout develop
git checkout -b release/${{ inputs.version }}
git push origin release/${{ inputs.version }}
সচরাচর জিজ্ঞাসিত প্রশ্ন
আপনি যদি Git Flow অনুসরণ করেন তবে একসাথে কেবল একটি রিলিজ ব্রাঞ্চ। দুটি সক্রিয় রিলিজ ব্রাঞ্চ থাকার অর্থ হল টিম সমান্তরালে দুটি রিলিজ প্রকাশের চেষ্টা করছে — এটি ক্রমিক রিলিজের নীতি লঙ্ঘন করে এবং ভার্সন নিয়ে বিভ্রান্তি সৃষ্টি করে।
git revert-এর মাধ্যমে রিলিজ ব্রাঞ্চ থেকে অসম্পূর্ণ ফিচারের কমিটগুলি সরান এবং পরবর্তী রিলিজ পর্যন্ত ফিচার স্থগিত করুন। কখনও অসম্পূর্ণ কার্যকারিতা প্রোডাকশনে প্রকাশ করবেন না — প্রযুক্তিগত ঋণ এবং সম্ভাব্য বাগ তাড়াহুড়োর মূল্য নয়।
একক সংশোধন সহ সহজ রিলিজের জন্য, রিলিজ ব্রাঞ্চ বাদ দেওয়া যেতে পারে এবং সরাসরি develop থেকে main-এ মার্জ করা যেতে পারে। তবে, স্ট্যান্ডার্ড রিলিজের জন্য, রিলিজ ব্রাঞ্চ বাধ্যতামূলক — এটি ভার্সন ফিক্স করে, প্রস্তুতি আলাদা করে এবং বাগফিক্সের ডাবল মার্জ নিশ্চিত করে।
সমস্ত রিলিজ পরিবর্তন পূর্বাবস্থায় ফেরাতে main-এ git revert ব্যবহার করুন। তারপর git push origin --delete vX.Y.Z কমান্ড দিয়ে রিলিজ ট্যাগ মুছুন। সমস্যাগুলি ঠিক করার পরে, বর্ধিত patch নম্বর সহ নতুন রিলিজ ব্রাঞ্চ তৈরি করুন।
Release candidate (RC) একটি বিল্ড আর্টিফ্যাক্ট যা চূড়ান্ত পরীক্ষার মধ্য দিয়ে যায়। Release branch হল একটি Git ব্রাঞ্চ যা থেকে release candidate তৈরি করা হয়। একটি রিলিজ ব্রাঞ্চ একাধিক RC বিল্ড (RC1, RC2, ইত্যাদি) উৎপন্ন করতে পারে বাগগুলি ঠিক করার সাথে সাথে।
সারসংক্ষেপ
release/X.Y.Z SemVer ভার্সন নম্বর সহ।আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন