Collaboration & Workflows
Git শুধুমাত্র ভার্সন কন্ট্রোল নয়, এটি টিমের মধ্যে কোলাবোরেশনের প্রধান মাধ্যম। এখানে জনপ্রিয় কিছু ওয়ার্কফ্লো এবং স্ট্র্যাটেজি আলোচনা করা হলো।
Pull Requests & Code Review
Forking Workflow
ওপেন সোর্স প্রজেক্টে কন্ট্রিবিউট করার জন্য Forking Workflow ব্যবহার হয়।
- Fork: মেইন রিপোজিটরির একটি কপি আপনার অ্যাকাউন্টে তৈরি করুন।
- Clone: আপনার ফর্ক করা রিপোজিটরি ক্লোন করুন।
- Branch & Change: নতুন ব্রাঞ্চে কাজ করুন।
- Push: আপনার রিপোজিটরিতে পুশ করুন।
- Pull Request (PR): মেইন রিপোজিটরির মেইনটেইনারের কাছে আপনার চেঞ্জ মার্চ করার জন্য রিকোয়েস্ট পাঠান।
Code Review Checklist
PR সাবমিট করার আগে বা রিভিউ করার সময় খেয়াল রাখুন:
- Clean Code: কোড কি রিডেবল এবং মেইনটেইনেবল?
- Functionality: রিকোয়ারমেন্ট অনুযায়ী কাজ করছে কি?
- Tests: ইউনিট টেস্ট লেখা হয়েছে কি?
- No Secrets: কোনো API Key বা পাসওয়ার্ড হার্ডকোড করা নেই তো?
Git Workflows
1. Feature Branch Workflow
সবচেয়ে কমন ওয়ার্কফ্লো।
mainব্রাঞ্চে স্টেবল কোড থাকে।- প্রতিটি ফিচারের জন্য
mainথেকে আলাদাfeatureব্রাঞ্চ তৈরি করা হয়। - কাজ শেষে PR-এর মাধ্যমে
main-এ মার্জ করা হয়।
2. Gitflow Workflow
বড় এন্টারপ্রাইজ প্রজেক্টের জন্য উপযুক্ত। এখানে নির্দিষ্ট রোলের জন্য আলাদা ব্রাঞ্চ থাকে:
- Main: প্রোডাকশন রেডি কোড।
- Develop: নেক্সট রিলিজের জন্য ইন্টিগ্রেশন ব্রাঞ্চ।
- Feature:
developথেকে তৈরি হয়, নতুন ফিচারের জন্য। - Release: রিলিজ প্রস্তুতির জন্য।
- Hotfix: প্রোডাকশন বাগ ফিক্সের জন্য সরাসরি
mainথেকে।
3. Trunk-Based Development
দ্রুত গতির (Agile/DevOps) টিমের জন্য।
- ডেভেলপাররা ছোট ছোট চেঞ্জ সরাসরি
main(Trunk) ব্রাঞ্চে ঘন ঘন মার্জ করে। - লং-লিভড (Long-lived) কোনো ফিচার ব্রাঞ্চ থাকে না।
- Feature Flags ব্যবহার করে ইনকমপ্লিট ফিচার হাইড রাখা হয়।
Monorepo Strategies
Monorepo হলো এমন একটি স্ট্র্যাটেজি যেখানে একটি রিপোজিটরিতে একাধিক প্রজেক্টের (Frontend, Backend, Mobile) কোড থাকে (যেমন: Google, Facebook ব্যবহার করে)।
Pros
- Atomic Commits: এক কমিটে ফ্রন্টএন্ড এবং ব্যাকএন্ড চেঞ্জ করা যায়।
- Shared Code: লাইব্রেরি শেয়ার করা সহজ।
- Unified CI/CD: সব প্রজেক্টের জন্য এক পাইপলাইন।
Cons
- Scale: রিপোজিটরি বিশাল হয়ে যায়,
git statusবাgit cloneস্লো হতে পারে। - Access Control: নির্দিষ্ট ফোল্ডারে এক্সেস রেস্ট্রিক্ট করা কঠিন।
Tools
Monorepo ম্যানেজ করার জন্য কিছু টুলস:
- Nx (JavaScript/TypeScript)
- Bazel (Google-এর তৈরি বিল্ড টুল)
- Lerna