Develop Branch হল Git Flow-এর প্রধান ইন্টিগ্রেশন ব্রাঞ্চ যেখানে রিলিজ প্রস্তুত করার আগে সমস্ত সম্পূর্ণ feature branches মার্জ করা হয়। main-এর বিপরীতে, develop-এ সবচেয়ে নতুন কিন্তু এখনও প্রকাশিত না হওয়া পরিবর্তনগুলি থাকে — এখানে টিমের সমস্ত ডেভেলপারদের থেকে দৈনিক কোড ইন্টিগ্রেশন ঘটে। Atlassian, 2024-এর মতে, develop Git Flow-এ একটি বাধ্যতামূলক ব্রাঞ্চ এবং টিমের জন্য একটি স্থিতিশীল ইন্টিগ্রেশন পরিবেশ প্রদান করে।
মুখ্য বিষয়
Develop Branch (ডেভেলপমেন্ট ব্রাঞ্চ) হল Git Flow-এ একটি দীর্ঘস্থায়ী ব্রাঞ্চ যা সমস্ত ডেভেলপারদের থেকে কোড ইন্টিগ্রেশনের জন্য কেন্দ্রীয় হাব হিসাবে কাজ করে। ডেভেলপমেন্ট সম্পূর্ণ হওয়ার এবং কোড রিভিউর পরে feature branches এতে মার্জ করা হয়।
develop-এ কোড সর্বদা রিলিজ তৈরির জন্য প্রস্তুত অবস্থায় থাকে, যদিও এখনও প্রোডাকশনে ডিপ্লয় করা হয়নি। এর মানে হল যে develop-এর সমস্ত ফিচার রিভিউ, টেস্টিং এবং ইন্টিগ্রেশন পরীক্ষার মধ্য দিয়ে গেছে, কিন্তু এখনও তাদের রিলিজ চক্রের অপেক্ষায় রয়েছে।
main-এর বিপরীতে, যেখানে প্রতিটি কোড সংস্করণ একটি রিলিজ, develop-এ পরিবর্তনের একটি ধারাবাহিক ধারা থাকে। feature branches মার্জ হওয়ার সাথে সাথে develop-এ commits দেখা যায়, যা দিনে বেশ কয়েকবার ঘটতে পারে।
Vincent Driessen, 2010-এর মতে, develop একটি সফল ব্রাঞ্চিং মডেলের একটি মূল উপাদান, কারণ এটি খসড়া কাজকে রিলিজের জন্য প্রস্তুত সংস্করণ থেকে আলাদা করে।
develop এবং main-এর মধ্যে পার্থক্য বোঝা সঠিক Git Flow ওয়ার্কফ্লোর জন্য গুরুত্বপূর্ণ। এই ব্রাঞ্চগুলি ভিন্ন ভিন্ন কাজ করে এবং স্থিতিশীলতার ভিন্ন ভিন্ন প্রয়োজনীয়তা রাখে।
| বৈশিষ্ট্য | Develop | Main / Master |
|---|---|---|
| উদ্দেশ্য | নতুন ফিচারের একীকরণ | স্থিতিশীল রিলিজ কোড |
| স্থিতিশীলতা | উচ্চ (পরীক্ষার পরে) | সর্বোচ্চ (প্রোডাকশন) |
| Commit ফ্রিকোয়েন্সি | দৈনিক (feature মার্জিং) | প্রতি রিলিজ (প্রতি ১-৪ সপ্তাহ) |
| ব্রাঞ্চ উৎস | এটি থেকে feature তৈরি হয় | এটি থেকে hotfix তৈরি হয় |
| মার্জিং | PR-এর মাধ্যমে feature থেকে | merge-এর মাধ্যমে release থেকে |
develop এবং main-এ বিভাজন টিমকে প্রোডাকশন সংস্করণের স্থিতিশীলতা ঝুঁকির মধ্যে না ফেলে ক্রমাগত নতুন কোড একীভূত করতে দেয়। ডেভেলপাররা অফিসিয়াল রিলিজের আগেও, PR অনুমোদনের সাথে সাথেই develop-এ তাদের কোড দেখতে পারেন।
Git Flow মডেলে, develop feature branches (পরিবর্তনের উৎস) এবং release branches (রিলিজের প্রস্তুতি) এর মধ্যে একটি কেন্দ্রীয় স্থান দখল করে। এই শ্রেণিবিন্যাস বোঝা কার্যকর ব্রাঞ্চিং-এর ভিত্তি।
এই কাঠামো নিশ্চিত করে যে develop-এ সর্বদা সমস্ত নতুন ফিচার সহ সর্বশেষ কোড থাকে, যখন main-এ শুধুমাত্র যাচাইকৃত প্রোডাকশন কোড থাকে। এটি App Store এবং Google Play-তে দীর্ঘ রিভিউ চক্রযুক্ত মোবাইল প্রজেক্টের জন্য বিশেষভাবে গুরুত্বপূর্ণ।
Develop feature, release এবং hotfix branches-এর মধ্যে কেন্দ্রীয় লিঙ্ক হিসাবে কাজ করে। মার্জ দিকনির্দেশনা বোঝা দ্বন্দ্ব এবং commit হারানো রোধ করার জন্য অপরিহার্য।
develop-এ কোডের মান উচ্চ হতে হবে, কিন্তু পরম নয়। main-এর বিপরীতে, যেখানে প্রতিটি ত্রুটির অর্থ জরুরি hotfix, develop-এ ছোটখাট ত্রুটি গ্রহণযোগ্য যা রিলিজের আগে ঠিক করা হবে।
develop-এ মার্জ করার আগে কোডের জন্য ন্যূনতম প্রয়োজনীয়তা:
CI/CD পাইপলাইনে স্বয়ংক্রিয় পরীক্ষা develop-এ প্রতিটি push-এ চালানো উচিত। যদি build ভেঙে যায়, দায়িত্বশীল ডেভেলপারকে এক ঘন্টার মধ্যে সমস্যা সমাধান করতে হবে বা তাদের commit ফিরিয়ে নিতে হবে।
develop-এর জন্য GitHub Actions সেটআপ করা নিশ্চিত করে যে প্রতিটি PR মার্জ করার আগে স্বয়ংক্রিয় পরীক্ষার মধ্য দিয়ে যায়। একটি সাধারণ পাইপলাইনে build, টেস্ট এবং লিন্টিং অন্তর্ভুক্ত।
# GitHub Actions — মার্জের পর develop পরীক্ষা
name: Develop CI
on:
pull_request:
branches: [develop]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: ./gradlew testDebug
- name: Lint
run: ./gradlew lint
- name: Build
run: ./gradlew assembleDebug
develop-এ মার্জ করা ইন্টিগ্রেশন ব্রাঞ্চের স্থিতিশীলতা বজায় রাখতে কঠোর নিয়ম অনুসরণ করতে হবে। এই নিয়ম লঙ্ঘন করলে দ্বন্দ্ব, ভাঙ্গা builds এবং টিমের সময় নষ্ট হয়।
PR হালনাগাদ নিয়ম বিশেষভাবে গুরুত্বপূর্ণ। যদি একটি feature branch এক সপ্তাহ আগে তৈরি করা হয় এবং develop 50 commits এগিয়ে যায়, সরাসরি মার্জ দ্বন্দ্ব সৃষ্টি করতে পারে যা develop-এর পরিবর্তে PR-এর প্রসঙ্গে সমাধান করা ভাল।
Branch protection rules হল GitHub, GitLab বা Bitbucket স্তরের সেটিংস যা develop-এ ভুল পরিবর্তনগুলি প্রতিরোধ করে। তারা নিশ্চিত করে যে এমনকি একটি আকস্মিক pushও ইন্টিগ্রেশন ব্রাঞ্চ ভাঙ্গবে না।
develop-এর জন্য প্রস্তাবিত সুরক্ষা নিয়ম:
develop সুরক্ষা সেটআপ করতে 10 মিনিট সময় লাগে কিন্তু ভাঙ্গা ইন্টিগ্রেশন ব্রাঞ্চ সম্পর্কিত সপ্তাহের ডাউনটাইম প্রতিরোধ করে। মাল্টি-প্ল্যাটফর্ম টিমযুক্ত মোবাইল প্রজেক্টের জন্য, এটি বিশেষভাবে প্রাসঙ্গিক।
একটি সাধারণ ডেভেলপারের দিন বিবেচনা করুন: সকালে তারা develop আপডেট করে, একটি নতুন feature branch তৈরি করে এবং কাজ শেষ করার পরে পরিবর্তনগুলি develop-এ ফিরিয়ে আনে।
# সকালের develop সিঙ্ক
git checkout develop
git pull origin develop
# develop থেকে নতুন feature branch তৈরি করা
git checkout -b feature/add-push-notifications
# ফিচারে কাজ...
git add . && git commit -m "Add FCM integration"
# ডেভেলপমেন্টের সময় develop আপডেট করা
git fetch origin develop
git rebase origin/develop
# PR অনুমোদনের পরে — স্থানীয় develop আপডেট করুন
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
develop-এ git pull কমান্ড একসাথে দুটি অপারেশন করে: git fetch (সার্ভার থেকে নতুন commits আনে) এবং git merge (সেগুলিকে স্থানীয় ব্রাঞ্চের সাথে মার্জ করে)। develop-এর জন্য, এটি মানক সিঙ্ক্রোনাইজেশন পদ্ধতি।
যদি build ভাঙ্গা কোড develop-এ আসে, তবে দ্রুত কাজ করতে হবে। develop-এর ডাউনটাইমের প্রতিটি ঘন্টা পুরো ডেভেলপমেন্ট টিমের জন্য অবরুদ্ধ কাজ।
যদি build ভাঙ্গা কোড develop-এ আসে, সমস্যাযুক্ত পরিবর্তনগুলি পূর্বাবস্থায় ফেরাতে একটি নতুন commit তৈরি করতে git revert ব্যবহার করুন। develop-এ git reset ব্যবহার করবেন না — এটি ইতিহাস পুনরায় লেখে যা অন্যান্য টিম সদস্যদের কাছে ইতিমধ্যে রয়েছে।
# সমস্যাযুক্ত commit খুঁজে বের করা
git log --oneline develop
# revert-এর মাধ্যমে commit বাতিল (নিরাপদ)
git revert a1b2c3d
# রিমোট develop-এ ফিক্স পাঠানো
git push origin develop
# নির্দিষ্ট commit-এ পরিবর্তন দেখা
git show a1b2c3d --stat
প্রায়শই জিজ্ঞাসিত প্রশ্ন
এক বা দুই ডেভেলপারের প্রজেক্টের জন্য, develop প্রায়শই অপ্রয়োজনীয় — main এবং feature branches যথেষ্ট। টিম ৩+ লোকে বাড়ার সাথে সাথে, develop স্থিতিশীল প্রোডাকশন কোড থেকে অসম্পূর্ণ ফিচার আলাদা করার জন্য প্রয়োজনীয় হয়ে ওঠে।
না, যেকোনো পেশাদার প্রজেক্টে develop-এ সরাসরি commits নিষিদ্ধ। সমস্ত পরিবর্তন কোড রিভিউ এবং স্বয়ংক্রিয় পরীক্ষা সহ Pull Request-এর মাধ্যমে যায়। ব্যতিক্রম হল README বা CI কনফিগারেশনের প্রশাসনিক সম্পাদনা, কিন্তু সেগুলিও PR-এর মাধ্যমে করা ভাল।
Trunk-based development-এ কোনো আলাদা develop branch নেই — সমস্ত ডেভেলপার খুব ছোট feature branches (1-2 দিন) সহ main-এ কাজ করে। এটি Git Flow-এর একটি বিকল্প, যা উচ্চ স্তরের টেস্ট অটোমেশন সহ DevOps সংস্কৃতিতে জনপ্রিয়।
প্রতি রিলিজের পরে, release branch develop-এ ফিরিয়ে আনা হয় যাতে রিলিজ প্রস্তুতির সময় করা সমস্ত ফিক্স অন্তর্ভুক্ত করা যায়। যদি এটি না করা হয়, develop রিলিজ কোড থেকে আলাদা হয়ে যাবে, যা পরবর্তী রিলিজে দ্বন্দ্ব সৃষ্টি করবে।
যদি develop ভেঙে যায়, একজন সিনিয়র ডেভেলপার শেষ স্থিতিশীল commit থেকে hotfix branch তৈরি করে, সমস্যা সমাধান করে এবং বিশেষ অবস্থা সহ PR-এর মাধ্যমে সরাসরি develop-এ ফিক্স মার্জ করে। পুনরুদ্ধারের পরে, মূল কারণ বিশ্লেষণ করা হয়।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন