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۔مرحلہ 6 — develop میں واپس انضمام — اکثر بھول جاتا ہے، لیکن یہ انتہائی اہم ہے۔ اس کے بغیر، ریلیز برانچ میں کیے گئے بگ فکسز develop تک نہیں پہنچیں گے، اور اگلی ریلیز میں وہی خرابیاں دوبارہ ظاہر ہو سکتی ہیں۔
ریلیز برانچ کی زندگی کا انحصار ریلیز کی پیچیدگی اور develop میں کوڈ کے معیار پر ہے۔ اوسطاً، ایک درمیانے سائز کی موبائل ایپلیکیشن کے لیے تیاری میں 2 سے 5 کاروباری دن لگتے ہیں۔
ریلیز برانچ میں سختی سے محدود کاموں کا سیٹ انجام دیا جاتا ہے۔ اس فہرست سے کسی بھی انحراف سے Git Flow ماڈل کی خلاف ورزی ہوتی ہے اور ریلیز کے استحکام کے لیے خطرہ پیدا ہوتا ہے۔
| تبدیلی کی قسم | اجازت ہے | مثال |
|---|---|---|
| ورژننگ | ہاں | build.gradle میں versionName اپ ڈیٹ |
| بگ فکسز | ہاں | اسٹارٹ اپ پر کریش ٹھیک کرنا |
| لوکلائزیشن | ہاں | نئی اسکرینوں کے لیے ترجمے شامل کرنا |
| دستاویزات | ہاں | CHANGELOG اور README اپ ڈیٹ |
| نئی خصوصیات | نہیں | نیا پروفائل اسکرین شامل کرنا |
| ریفیکٹرنگ | نہیں | نیٹ ورک پرت کو دوبارہ لکھنا |
| لائبریری اپ ڈیٹس | احتیاط | صرف بگ فکسز کے لیے پیچ ورژن |
نئی خصوصیات پر پابندی کا قاعدہ ریلیز برانچ میں سب سے اہم ہے۔ اگر کوئی خصوصیت ریلیز کے لیے تیار نہیں ہوئی، تو وہ اگلے چکر کا انتظار کرتی ہے۔ ریلیز برانچ میں نامکمل خصوصیت کو دھکیلنے کی کوشش ڈیڈ لائن سے محروم ہونے اور پروڈکشن میں بگز کی بنیادی وجہ ہے۔
ریلیز برانچ میں ایپلیکیشن ورژن نمبر لازمی طور پر اپ ڈیٹ کیا جاتا ہے۔ 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 کرتا ہے۔
کچھ ٹیمیں تاریخ کو لکیری رکھنے کے لیے واپس انضمام کے لیے merge کے بجائے rebase استعمال کرتی ہیں۔ تاہم، merge develop کے لیے زیادہ محفوظ ہے، کیونکہ یہ commit کی تاریخ کو دوبارہ نہیں لکھتا جو دوسرے ڈویلپرز پہلے سے استعمال کر رہے ہوں۔
آئیے موبائل ایپلیکیشن ورژن 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
کمانڈ 5 اور 6 — ڈبل انضمام — انتہائی اہم ہیں۔ پہلے main ریلیز کوڈ اور ٹیگ حاصل کرتا ہے، پھر develop ریلیز کے بگ فکسز کے ساتھ مطابقت پذیر ہوتا ہے۔ اگر مرحلہ 6 چھوڑ دیا جاتا ہے، تو ریلیز کی اصلاحات اگلے ترقیاتی چکر میں نہیں پہنچیں گی۔
باقاعدہ ریلیز والے موبائل پروجیکٹس کے لیے، ریلیز برانچ بنانے اور ورژن اپ ڈیٹ کرنے کا عمل 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 کے ذریعے ریلیز برانچ سے نامکمل خصوصیت کے commits ہٹائیں اور خصوصیت کو اگلی ریلیز تک ملتوی کریں۔ نامکمل فعالیت کو کبھی بھی پروڈکشن میں جاری نہ کریں — تکنیکی قرض اور ممکنہ بگز جلدی کے قابل نہیں ہیں۔
ایک اصلاح والی سادہ ریلیز کے لیے، ریلیز برانچ کو چھوڑا جا سکتا ہے اور براہ راست develop سے main میں ضم کیا جا سکتا ہے۔ تاہم، معیاری ریلیز کے لیے، ریلیز برانچ لازمی ہے — یہ ورژن کو فکس کرتی ہے، تیاری کو الگ کرتی ہے، اور بگ فکسز کا ڈبل انضمام یقینی بناتی ہے۔
تمام ریلیز تبدیلیوں کو کالعدم کرنے والا نیا commit بنانے کے لیے main پر git revert استعمال کریں۔ پھر git push origin --delete vX.Y.Z کمانڈ سے ریلیز ٹیگ حذف کریں۔ مسائل کو ٹھیک کرنے کے بعد، بڑھے ہوئے پیچ نمبر کے ساتھ نئی ریلیز برانچ بنائیں۔
Release candidate (RC) ایک بلڈ آرٹیفیکٹ ہے جو حتمی جانچ سے گزرتا ہے۔ Release branch ایک Git برانچ ہے جس سے release candidate بنایا جاتا ہے۔ ایک ریلیز برانچ بگز ٹھیک ہونے کے ساتھ ساتھ متعدد RC بلڈز (RC1، RC2، وغیرہ) پیدا کر سکتی ہے۔
خلاصہ
release/X.Y.Z SemVer ورژن نمبر کے ساتھ۔ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں