Merge Request (MR): এটি কী, কীভাবে তৈরি করবেন এবং রিভিউ প্রক্রিয়া

লেখক: IT Sectr প্রকাশিত: 2026-05-11 পড়ার সময়: 9 মিনিট

Merge Request (MR) — একটি Git ব্রাঞ্চ থেকে অন্যটিতে পরিবর্তন মার্জ করার অনুরোধ, GitLab এবং GitHub-এ কোড রিভিউর কেন্দ্রীয় উপাদান। GitLab Docs, 2024 অনুসারে, Merge Request (MR) GitHub-এর Pull Request (PR) থেকে শুধুমাত্র পরিভাষায় ভিন্ন: GitLab-এ এটি MR, GitHub-এ PR, কিন্তু সারমর্ম এবং প্রক্রিয়া একই। প্রতিটি MR-এ পরিবর্তনের বর্ণনা, কমিটের তালিকা, diff ফাইল এবং দলের সাথে আলোচনা অন্তর্ভুক্ত থাকে।

মূল বিষয়

  • Merge Request (MR) — GitLab এবং GitHub-এ কোড রিভিউ এবং গুণমান নিয়ন্ত্রণের জন্য ব্যবহৃত ব্রাঞ্চ মার্জ অনুরোধ প্রক্রিয়া।
  • MR-এ অন্তর্ভুক্ত বর্ণনা, কমিট, পরিবর্তনের diff, আলোচনা এবং রিভিউ স্ট্যাটাস (WIP, Ready, Approved, Merged)।
  • CI/CD পাইপলাইন MR তৈরি হলে স্বয়ংক্রিয়ভাবে চলে, মার্জের আগে বিল্ড, টেস্ট এবং লিন্টার পরীক্ষা করে।
  • রিভিউয়ার নিয়োগ — একটি বাধ্যতামূলক পদক্ষেপ: দায়িত্বশীল ডেভেলপার কোড রিভিউ করে এবং সরাসরি diff ফাইলে মন্তব্য রাখে।
  • অনুমোদনের পর MR Squash, Merge Commit বা Fast-Forward ব্যবহার করে মার্জ করা যেতে পারে, যা দলের নীতির উপর নির্ভর করে।

Merge Request (MR) কী?

Merge Request (MR) — একটি Git ব্রাঞ্চ থেকে অন্যটিতে পরিবর্তন একীভূত করার অনুরোধ, যা কোড রিভিউ এবং স্বয়ংক্রিয় পরীক্ষার প্রক্রিয়া শুরু করে। কনসোলের মাধ্যমে সরাসরি মার্জের বিপরীতে, MR একটি আনুষ্ঠানিক পদ্ধতি তৈরি করে: ডেভেলপার পরিবর্তন বর্ণনা করে, রিভিউয়ার নিয়োগ করে, CI/CD চালু করে এবং পরিবর্তন প্রয়োগের আগে প্রতিক্রিয়া পায়। এটি GitLab-এর একটি মূল উপাদান, কিন্তু GitHub-এর সমতুল্য প্রক্রিয়াকে Pull Request (PR) বলা হয়।

GitLab Documentation, 2026 অনুসারে, GitLab-এ বার্ষিক 80 মিলিয়নেরও বেশি Merge Requests তৈরি হয়। প্রতিটি MR-এ চারটি প্রধান উপাদান থাকে: পরিবর্তনের প্রসঙ্গ সহ বর্ণনা, কমিটের তালিকা, কোডের পার্থক্য (diff) এবং আলোচনা (আলোচনা সূত্র)। এই উপাদানগুলির একটির অনুপস্থিতিতে, MR অসম্পূর্ণ বিবেচিত হয়।

Merge Request (MR) তিনটি কাজ সমাধান করে: সুরক্ষিত ব্রাঞ্চে (main, develop) সরাসরি পরিবর্তন প্রতিরোধ করে, রিভিউর মাধ্যমে গুণমান নিয়ন্ত্রণ প্রদান করে এবং ভবিষ্যতের ডেভেলপারদের জন্য আলোচনার ইতিহাস সংরক্ষণ করে। GitLab-এ, MR-এর স্ট্যাটাস ইন্টারফেসে রঙ নির্দেশকের সাথে প্রদর্শিত হয়: Draft-এর জন্য ধূসর, অপেক্ষমাণের জন্য কমলা, Approved-এর জন্য সবুজ, Merged-এর জন্য বেগুনি এবং Closed-এর জন্য লাল।

পরিভাষা: MR, PR এবং CR

বিভিন্ন Git প্ল্যাটফর্মে, Merge Request ভিন্ন ভিন্ন নামে ডাকা হয়। GitLab “Merge Request” (MR) ব্যবহার করে, GitHub “Pull Request” (PR) ব্যবহার করে। Gerrit-এ Change Request (CR) সাদৃশ্যপূর্ণ। তিনটিই একই প্রক্রিয়া নির্দেশ করে: কোড রিভিউর মাধ্যমে পরিবর্তন একীভূত করার অনুরোধ। শব্দটির পছন্দ শুধুমাত্র প্রকল্পে ব্যবহৃত প্ল্যাটফর্মের উপর নির্ভর করে।

git
# পরিবর্তন সহ একটি ব্রাঞ্চ তৈরি করুন
git checkout -b feature/add-auth
git commit -m "Add OAuth2 authentication flow"
git push origin feature/add-auth

# আপনি GitLab/GitHub UI বা CLI-এর মাধ্যমে MR তৈরি করতে পারেন:
gh pr create --title "Add OAuth2 authentication flow" \
  --body "Implements OAuth2 with Google and Apple providers" \
  --reviewer "team-lead"

MR বনাম PR: GitLab এবং GitHub-এর মধ্যে পার্থক্য

GitLab-এ Merge Request এবং GitHub-এ Pull Request কার্যকরীভাবে অভিন্ন প্রক্রিয়া ভিন্ন নামে। পার্থক্যটি ইতিহাসের কারণে: GitLab প্রাথমিকভাবে নিজেকে GitHub-এর Self-Hosted বিকল্প হিসাবে অবস্থান করেছিল এবং মার্জ প্রক্রিয়ার জন্য “merge request” শব্দটি বেছে নিয়েছিল। GitHub, যা আগে চালু হয়েছিল, “pull request” ব্যবহার করেছিল — মূল ব্রাঞ্চে পরিবর্তন “টানার” (pull) অনুরোধ।

GitHub Docs, 2024 অনুসারে, উভয় টুল একই সেট বৈশিষ্ট্য সমর্থন করে: Markdown বর্ণনা, রিভিউয়ার নিয়োগ, কোডের নির্দিষ্ট লাইনে মন্তব্য, পরীক্ষার স্ট্যাটাস এবং শর্ত পূরণ হলে স্বয়ংক্রিয় মার্জ। পার্থক্যগুলি ইন্টারফেস এবং অতিরিক্ত ক্ষমতার সাথে সম্পর্কিত।

প্যারামিটারGitLab (Merge Request)GitHub (Pull Request)
শব্দMerge Request (MR)Pull Request (PR)
খসড়াDraft MRDraft PR
Code OwnersCode Owners + ApprovalsCODEOWNERS + Review
মার্জ পদ্ধতিMerge Commit, Squash, Fast-ForwardMerge Commit, Squash, Rebase
CI একীকরণGitLab CI/CD অন্তর্নির্মিতGitHub Actions

কীভাবে Merge Request তৈরি করবেন: ধাপে ধাপে নির্দেশিকা

Merge Request (MR) তৈরি করা রিমোট রিপোজিটরিতে পরিবর্তন সহ একটি ব্রাঞ্চ প্রকাশের মাধ্যমে শুরু হয়। GitLab বা GitHub-এ push করার পরে, ইন্টারফেসে “Create Merge Request” বা “Compare & Pull Request” বাটন দেখা যায়। ডেভেলপার বর্ণনা পূরণ করে, লক্ষ্য ব্রাঞ্চ (সাধারণত develop বা main) নির্দিষ্ট করে, রিভিউয়ার নিয়োগ করে এবং লেবেল সংযুক্ত করে।

GitLab Documentation, 2025 অনুসারে, একটি স্ট্যান্ডার্ড MR-এ 72 অক্ষর পর্যন্ত শিরোনাম, একটি টেমপ্লেট সহ বর্ণনা এবং ইস্যুর লিঙ্ক থাকে। বর্ণনাটি প্রশ্নের উত্তর দেওয়া উচিত: কী করা হয়েছে, কেন, কীভাবে পরীক্ষা করা হয়েছে। GitLab Closes, Fixes, Resolves কীওয়ার্ডের মাধ্যমে মার্জের সময় ইস্যু স্বয়ংক্রিয় বন্ধ করার সমর্থন করে।

yaml
# .gitlab/merge_request_templates/default.md টেমপ্লেটের উদাহরণ
## What does this MR do?

[পরিবর্তনের সংক্ষিপ্ত বিবরণ: কী এবং কেন]

## How to test

1. চালান ./gradlew test
2. যাচাই করুন LoginActivity টেস্ট টোকেনসহ
3. নিশ্চিত করুন যে রিগ্রেশন নেই AuthManager

## Related issues

Closes #142

MR জীবনচক্র: Draft থেকে Merged পর্যন্ত

Merge Request (MR) GitLab-এ পাঁচটি স্ট্যাটাসের মধ্য দিয়ে যায়। প্রথমটি হল Draft (খসড়া), শিরোনামে “Draft:” উপসর্গ দিয়ে চিহ্নিত, যা মার্জ ব্লক করে। প্রস্তুত হলে, ডেভেলপার Draft সরিয়ে দেয়, এবং MR Opened স্ট্যাটাসে চলে যায় — কোড রিভিউ শুরু হয় এবং CI/CD পাইপলাইন শুরু হয়।

GitLab Docs, 2024 অনুসারে, Opened স্ট্যাটাসে, রিভিউয়াররা diff পরীক্ষা করে, মন্তব্য রাখে এবং Resolve Threads-এর মাধ্যমে পরিবর্তন অনুরোধ করে। যখন সকল থ্রেড সমাধান হয় এবং CI/CD সফলভাবে পাস করে, দায়িত্বশীল ডেভেলপার Approve সেট করে। তারপর, MR Merge বাটন ব্যবহার করে মার্জ করা যেতে পারে, বা স্বয়ংক্রিয় মার্জ (Auto-merge) অপেক্ষা করা যেতে পারে।

GitLab তিনটি চূড়ান্ত স্ট্যাটাস বিকল্প সমর্থন করে: Merged (সফলভাবে মার্জ), Closed (মার্জ ছাড়া বন্ধ, যেমন একটি বৈশিষ্ট্য পরিত্যাগ করার সময়), এবং Reopened (বন্ধ করার পরে পুনরায় খোলা)। অডিটের জন্য প্রতিটি স্ট্যাটাস MR কার্যকলাপ টাইমলাইনে লগ হয়।

স্বয়ংক্রিয় স্ট্যাটাস এবং ট্রিগার

GitLab ঘটনাগুলিতে Merge Request স্ট্যাটাস স্বয়ংক্রিয়ভাবে আপডেট করে: নতুন কমিট push করলে Approvals রিসেট হয়, সফল CI পাইপলাইনে স্ট্যাটাস Pipeline passed হয়, ব্যর্থতায় — Pipeline failed (মার্জ ব্লক হয়)। Auto-merge কনফিগার করা যেতে পারে: সফল CI এবং সমস্ত প্রয়োজনীয় অনুমোদন পাওয়ার পরে MR স্বয়ংক্রিয়ভাবে মার্জ হয়।

  • Draft — খসড়া, CI চলে কিন্তু মার্জ ব্লক করা
  • Opened — রিভিউর জন্য প্রস্তুত, রিভিউয়ার নিয়োগ, পাইপলাইন সক্রিয়
  • Approved — প্রয়োজনীয় সংখ্যক অনুমোদন প্রাপ্ত
  • Merged — পরিবর্তন লক্ষ্য ব্রাঞ্চে মার্জ হয়েছে
  • Closed — মার্জ ছাড়া বন্ধ

Merge Request-এ কোড রিভিউর নিয়ম

Merge Request (MR)-এ কোড রিভিউ অধিকাংশ বাণিজ্যিক প্রকল্পে একটি বাধ্যতামূলক ধাপ। SmartBear, 2023 গবেষণা অনুসারে, MR-এর সাথে কোড রিভিউ ত্রুটির সংখ্যা 30–60% কমায় এবং নতুন ডেভেলপারদের অনবোর্ডিং ত্বরান্বিত করে। মূল নিয়ম হল প্রতিটি MR কমপক্ষে একজন, পছন্দসই দুইজন ডেভেলপার দ্বারা পরীক্ষা করা উচিত যারা কোড লেখায় অংশ নেয়নি।

MR পরীক্ষা পাঁচটি মানদণ্ড অন্তর্ভুক্ত করে: যৌক্তিক সঠিকতা, কোড শৈলী মেনে চলা, পরীক্ষার কভারেজ, নিরাপত্তা এবং কর্মক্ষমতা। GitLab-এ, Required Approvals কনফিগার করা যেতে পারে — মার্জের আগে বাধ্যতামূলক অনুমোদনের সংখ্যা, যেমন main-এর জন্য 2টি অনুমোদন এবং develop-এর জন্য 1টি।

MR-এ আলোচনা থ্রেডে পরিচালিত হয় — কোডের নির্দিষ্ট লাইনে মন্তব্য। মার্জের আগে প্রতিটি থ্রেড সমাধান করা আবশ্যক। রিভিউ দ্রুত করতে, MR আকার সীমিত করার পরামর্শ দেওয়া হয়: 200–400 লাইন পরিবর্তন। Google Research (2022) অনুসারে, 400 লাইনের বেশি MR 30% কম কার্যকরভাবে পর্যালোচনা করা হয়।

Merge Request-এ CI/CD পাইপলাইন

Merge Request (MR) তৈরি হলে, CI/CD পাইপলাইন স্বয়ংক্রিয়ভাবে শুরু হয়। GitLab-এ এটি .gitlab-ci.yml ফাইলের মাধ্যমে হয়, GitHub-এ GitHub Actions ওয়ার্কফ্লোর মাধ্যমে। পাইপলাইনে প্রকল্প বিল্ড, ইউনিট টেস্ট, লিন্টার, স্ট্যাটিক বিশ্লেষণ (SAST) এবং কোড কভারেজ পরীক্ষা অন্তর্ভুক্ত।

GitLab Blog, 2024 অনুসারে, পাইপলাইন স্ট্যাটাস সরাসরি MR-এ প্রদর্শিত হয়: সবুজ চেকমার্ক (passed), লাল ক্রস (failed), বা হলুদ বৃত্ত (running)। পাইপলাইন ব্যর্থ হলে, GitLab সমাধান না হওয়া পর্যন্ত Merge বাটন ব্লক করে। সেটিংসে, “Merge when pipeline succeeds” সক্রিয় করা যেতে পারে — সফল পাইপলাইনের পরে স্বয়ংক্রিয় মার্জ।

yaml
# .gitlab-ci.yml — Android প্রকল্পের উদাহরণ
test:
  stage: test
  script:
    - ./gradlew ktlintCheck
    - ./gradlew testDebugUnitTest
  only:
    - merge_requests

build:
  stage: build
  script:
    - ./gradlew assembleDebug
  only:
    - merge_requests

মার্জ পদ্ধতি: Squash, Merge Commit, Fast-Forward

GitLab এবং GitHub Merge Request-এর জন্য তিনটি মার্জ পদ্ধতি অফার করে। পছন্দ দলের নীতি এবং পছন্দসই ইতিহাস পরিষ্কারতার উপর নির্ভর করে। Merge Commit একটি পৃথক মার্জ কমিট তৈরি করে, সম্পূর্ণ বৈশিষ্ট্য ব্রাঞ্চ ইতিহাস সংরক্ষণ করে। Squash সমস্ত ব্রাঞ্চ কমিট লক্ষ্য ব্রাঞ্চে একটি কমিটে একত্রিত করে। Fast-Forward মার্জ কমিট ছাড়াই কমিটগুলি রৈখিকভাবে প্রয়োগ করে।

GitLab Docs, 2025 অনুসারে, উচ্চ কমিট ঘনত্বের প্রকল্পগুলির জন্য (একটি বৈশিষ্ট্য ব্রাঞ্চে 20+ কমিট) Squash পছন্দ করা হয়। Trunk-Based Development-এর জন্য Fast-Forward বাধ্যতামূলক। Git Flow-এ শাখাকরণ শব্দার্থ সংরক্ষণের জন্য Merge Commit ব্যবহার করা হয়।

  • Merge Commit — ইতিহাস সংরক্ষণ করে, মার্জ কমিট তৈরি করে, Git Flow-এর জন্য উপযুক্ত
  • Squash — সমস্ত কমিট একটিতে একত্রিত করে, পরিষ্কার ইতিহাস, মধ্যবর্তী কমিট হারায়
  • Fast-Forward — মার্জ কমিট ছাড়া রৈখিক ইতিহাস, TBD-তে বাধ্যতামূলক

সেরা অভ্যাস: কীভাবে ভালো MR লিখবেন

একটি গুণগত Merge Request (MR) রিভিউ সময় এবং ত্রুটির সংখ্যা হ্রাস করে। প্রথম নিয়ম হল একটি MR একটি কাজ সমাধান করে। যদি পরিবর্তনগুলি একাধিক অসম্পর্কিত বৈশিষ্ট্যকে প্রভাবিত করে, তবে সেগুলি পৃথক MR-এ বিভক্ত করা উচিত। দ্বিতীয়ত, MR শিরোনাম তথ্যপূর্ণ হওয়া উচিত: “Fix stuff” বা “Update code”-এর পরিবর্তে “Add OAuth2 authentication with Google provider”।

Google Engineering Practices, 2024 অনুসারে, একটি ভাল MR-এ প্রসঙ্গ বর্ণনা থাকে: কেন পরিবর্তনগুলি প্রয়োজনীয়, কীভাবে সেগুলি পরীক্ষা করা হয়েছে এবং কী ঝুঁকি রয়েছে। MR-এর আকার 400 লাইনের বেশি হওয়া উচিত নয়। যদি আয়তন বড় হয়, তবে কাজটি উপ-কাজে বিভক্ত করা প্রয়োজন। ডকুমেন্টেশন এবং পরীক্ষার জন্য, ব্যতিক্রম গ্রহণযোগ্য তবে ব্যাখ্যা সহ।

Merge Request (MR)-এ নতুন কার্যকারিতার জন্য স্বয়ংক্রিয় পরীক্ষা অন্তর্ভুক্ত করা উচিত। GitLab-এ, Coverage Check নীতি কনফিগার করা যেতে পারে — কোড কভারেজ একটি সীমার নিচে নেমে গেলে (যেমন 80%) MR স্বয়ংক্রিয়ভাবে ব্লক হয়। এটি নিশ্চিত করে যে নতুন কার্যকারিতা সামগ্রিক প্রকল্পের গুণমান হ্রাস না করে।

  • এক MR — একটি কাজ: বড় পরিবর্তনগুলি কয়েকটি ছোট MR-এ বিভক্ত করুন
  • টেমপ্লেট সহ বর্ণনা: একরূপতার জন্য .gitlab/merge_request_templates ব্যবহার করুন
  • আকার 400 লাইন পর্যন্ত: বড় MR ধীরে এবং আরও ত্রুটির সাথে পর্যালোচনা করা হয়
  • পরীক্ষা বাধ্যতামূলক: নতুন বৈশিষ্ট্যগুলি ইউনিট পরীক্ষা দ্বারা আচ্ছাদিত করা উচিত

MR বর্ণনা টেমপ্লেট

GitLab .gitlab/merge_request_templates/ ফাইলের মাধ্যমে Merge Request টেমপ্লেট সমর্থন করে। টেমপ্লেটে বিভাগ অন্তর্ভুক্ত: কী করা হয়েছে, কীভাবে পরীক্ষা করবেন, সম্পর্কিত কাজ এবং চেকলিস্ট। টেমপ্লেট ব্যবহার MR তৈরি দ্রুত করে এবং নিশ্চিত করে যে ডেভেলপাররা গুরুত্বপূর্ণ তথ্য অন্তর্ভুক্ত করতে ভুলবেন না। MR বর্ণনায়, মার্জের সময় কাজগুলির স্বয়ংক্রিয় বন্ধের জন্য সম্পর্কিত ইস্যু (Closes #N) নির্দিষ্ট করা উচিত।

সচরাচর জিজ্ঞাসিত প্রশ্ন

সরল ভাষায় Merge Request (MR) কী?

Merge Request (MR) হল একজন ডেভেলপারের তার পরিবর্তনগুলি প্রধান প্রকল্প ব্রাঞ্চে মার্জ করার অনুরোধ। দলের অন্যান্য সদস্যরা কোড পর্যালোচনা করে, মন্তব্য রাখে এবং শুধুমাত্র অনুমোদনের পর পরিবর্তনগুলি প্রকল্পে প্রবেশ করে। এটি GitHub-এর Pull Request-এর অনুরূপ।

Merge Request Pull Request থেকে কীভাবে আলাদা?

Merge Request একটি GitLab শব্দ, Pull Request একটি GitHub শব্দ। কার্যকরীভাবে, প্রক্রিয়াগুলি অভিন্ন: মার্জ অনুরোধ, কোড রিভিউ, কোড লাইনে মন্তব্য, CI/CD পরীক্ষা। পার্থক্য শুধুমাত্র বাটনের নাম এবং কিছু UI উপাদানে।

কীভাবে GitLab-এ Merge Request তৈরি করবেন?

রিমোট রিপোজিটরিতে পরিবর্তনগুলি push করার পর, Merge Requests ট্যাব → Create Merge Request খুলুন। উৎস ব্রাঞ্চ, লক্ষ্য ব্রাঞ্চ নির্বাচন করুন, বর্ণনা পূরণ করুন (আপনি টেমপ্লেট ব্যবহার করতে পারেন), একজন রিভিউয়ার নিয়োগ করুন এবং Create ক্লিক করুন। GitLab স্বয়ংক্রিয়ভাবে পরিবর্তনের diff দেখাবে।

MR-এর জন্য কতজন রিভিউয়ার নিয়োগ করা উচিত?

সর্বোত্তম হল প্রতি MR-এ 1–2 জন রিভিউয়ার। Google Research অনুসারে, বেশি রিভিউয়ার রিভিউ গুণমান উন্নত করে না বরং অপেক্ষার সময় বাড়ায়। main ব্রাঞ্চের জন্য, প্রায়শই 2টি বাধ্যতামূলক অনুমোদন কনফিগার করা হয়, develop-এর জন্য — 1টি।

Merge Request-এর আদর্শ আকার কী হওয়া উচিত?

আদর্শ MR আকার হল 200–400 লাইন পরিবর্তন বা 1–3টি কমিট। SmartBear এবং Google অনুসারে, 400 লাইনের বেশি MR 30% কম কার্যকরভাবে পর্যালোচনা করা হয়। বড় পরিবর্তনগুলি কয়েকটি ক্রমিক MR-এ বিভক্ত করুন।

সারসংক্ষেপ

  • Merge Request (MR) — বাধ্যতামূলক কোড রিভিউ এবং CI/CD পরীক্ষাসহ পরিবর্তন মার্জ অনুরোধের প্রক্রিয়া
  • GitLab Merge Request শব্দ ব্যবহার করে, GitHub Pull Request ব্যবহার করে, কিন্তু কার্যকারিতা অভিন্ন
  • MR জীবনচক্র: Draft → Opened → Approved → Merged (বা Closed)
  • CI/CD পাইপলাইন MR-এ স্বয়ংক্রিয়ভাবে চলে এবং ত্রুটিতে মার্জ ব্লক করে
  • মার্জ পদ্ধতি: Merge Commit, Squash এবং Fast-Forward — দল নীতি অনুসারে নির্বাচিত
  • সর্বোত্তম MR আকার — 400 লাইন পর্যন্ত, একটি MR একটি কাজ সমাধান করে
  • কোড রিভিউ MR-এর সাথে ত্রুটি 30–60% কমায় (SmartBear, 2023)

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন