প্রথমবার যখন কেউ আমাকে তাঁর Pull Request Review করতে বলেছিলাম, এক Tab-এ GitHub Open করলাম, আরেক Tab-এ Slack। বুঝলাম Code Actually Run করব কীভাবে সেটা জানি না। শেষ পর্যন্ত Manually তাঁর Fork Clone করলাম, Branch Name খুঁজলাম, আর Local Repo Mess করে ফেললাম। এর চেয়ে ভালো কোনো Way ছিল।
পরে দুইটা Way পেলাম — আর কয়েক বছর ধরে দুইটাই Use করছি।
Code Review-এর Problem
GitHub-এর Web Interface ছোটখাটো Diffs-এর জন্য চলে। কিন্তু Code Actually Run করতে হলে — সেই Endpoint Test করতে, UI Fix Verify করতে, বা Debug করতে কেন Test Fail করছে — তখন PR Locally দরকার।
Default Workflow টা Awkward: Author-কে Message করে Fork URL আর Branch Name নেওয়া, নাহলে GitHub-এর UI-তে Click করে খোঁজা। দুইটাই Slow।
আমি যা চেয়েছিলাম তা: PR Number টাইপ করো, Code পাও।
Method 1: Git Config (আমার 80% Review)
.git/config-এ [remote "origin"]-এর নিচে এটা Add করো:
fetch = +refs/pull/*/head:refs/remotes/github-pr/*fetch = +refs/pull/*/head:refs/remotes/github-pr/*
এখন git fetch সব PR Pull করে:
* [new ref] refs/pull/1015/head -> github-pr/1015 * [new ref] refs/pull/1020/head -> github-pr/1020* [new ref] refs/pull/1015/head -> github-pr/1015 * [new ref] refs/pull/1020/head -> github-pr/1020
যেকোনো PR Checkout করো:
git checkout github-pr/1015git checkout github-pr/1015
তুমি এখন PR-এর Exact Commit-এ। হ্যাঁ, এটা Detached HEAD। হ্যাঁ, Changes Push back করতে চাইলে Mildly Annoying। কিন্তু Code Read করা আর Test Run করার জন্য — যেটা আমার বেশিরভাগ Review — আমি Care করি না। এটা যেকোনো Machine-এ কাজ করে যেখানে Git আছে, পুরোনো Server-েও যেখানে নতুন Tool Install করা Nightmare।
Detached HEAD কখনও কখনও Feature। কারো PR-তে Accidentally Commit করা থেকে বাঁচায় যখন Explore করছি।
Method 2: GitHub CLI (যখন Power দরকার)
কখনও কখনও আরো দরকার হয়। হয়তো PR-তে Fixes Push back করতে চাও — Typo Fix করো, Push করো, তারা Merge করে, সবাই Happy। নাহলে Proper Branch Tracking চাও।
GitHub CLI Install করো, একবার gh auth login দিয়ে Authenticate করো, তারপর:
gh pr checkout 1015gh pr checkout 1015
এটা Proper Branch Names, Remote Tracking, আর Fork Automatic Handle করে। Push কাজ করে কারণ gh Upstream Configure করে দেয়।
আমি gh pr list ও Use করি GitHub-এর Slow Interface Load না করে Open PRs Scan করতে। তারপর Interesting লাগলে Checkout করি।
বিরক্তিকর Part
আরেকটা Tool Install করা। SSH দিয়ে Server-এ থাকলে আরেকটা Break হওয়ার জিনিস। আরেকটা Auth Token Manage করা। gh যখন কাজ করে, Great। যখন কাজ করে না, তুমি OAuth Flow Debug করছো Code Review করার পরিবর্তে।
আরেকবার gh Auto-updated হলো আর দুই দিন Shell Integration Break করলো। Fun নয় যখন Ship করতে হচ্ছে।
আমার Actual Workflow
Quick Review — শুধু Reading আর Testing:
git fetch git checkout github-pr/420 go test ./... git checkout maingit fetch git checkout github-pr/420 go test ./... git checkout main
Review যেখানে Fix করতে হবে:
git checkout main # Clean Start gh pr checkout 420 --branch review-420 # ... Bug Fix করো ... git commit -am "fix: handle nil pointer" git push # Automatic তাদের PR-তে Push হয় gh pr review 420 --approvegit checkout main # Clean Start gh pr checkout 420 --branch review-420 # ... Bug Fix করো ... git commit -am "fix: handle nil pointer" git push # Automatic তাদের PR-তে Push হয় gh pr review 420 --approve
CLI Shine করে যখন Changes করো। শুধু Code Read করার জন্য? Overkill।
যে Cost কেউ বলে না
একটা Edge Case Hit করেছিলাম একবার: Git Config Method প্রতি Fetch-এ সব PR Pull করে। যদি Repo-তে 500 Open PR থাকে, সেটা অনেক Refs। git fetch Slow হয়ে যায়। git branch -a Unreadable হয়ে যায়।
সেই Case-এ gh Use করো। এটা শুধু যা দরকার তাই Checkout করে।
Normal repos-এ 20-50 PR থাকলে? Who cares। সব Fetch করো।