GitHub Stacked Pull Requests нийтэд нээлттэй боллоо: Томоохон кодын өөрчлөлтийг хянах шинэ эрин
Код хянахад тулгардаг гол асуудал ба Шинэ шийдэл
Программ хөгжүүлэлтийн багуудад байнга тохиолддог хамгийн хүндрэлтэй үйл явцын нэг бол асар том Pull Request (PR)-ийг review хийх явдал байдаг. Олон мянган мөр код бүхий ганц том PR ирэхэд хянагч (reviewer) кодын логикийг бүрэн ойлгоход хэцүү болж, алдаатай код сулрах эсвэл Review хийх үйл явц хэдэн өдрөөр саатах нь жишүү.
Ялангуяа сүүлийн үед AI coding agent-ууд (GitHub Copilot, Claude Code) ашиглалтад нэвтэрснээр секундын дотор хэдэн зуун мөр код бэлэн болдог болсон нь хянагчдад ирэх ачааллыг улам бүр нэмэгдүүлсэн билээ.
Энэхүү асуудлыг шийдвэрлэхийн тулд GitHub компани удаан хүлээгдсэн Stacked Pull Requests функцийг албан ёсоор Public Preview хувилбараар зарлаж, бүх репозиториудад үе шаттайгаар нээж эхэллээ.
Stacked Pull Requests гэж юу вэ?
Өмнө нь Meta, Google зэрэг технологийн аварга компаниуд дотоод системдээ ашигладаг байсан, эсвэл ghstack зэрэг гуравдагч талын хэрэгслээр зохицуулдаг байсан "stacking" ажлын урсгалыг GitHub одоо натив буюу шууд өөрийн системдээ уусган оруулж байна.
Stacked Pull Requests нь томоохон боломж (feature) эсвэл рефакторинг ажлыг нэг том PR болгохын оронд дараалсан, жижиг, бие биенээсээ хамааралтай PR-ийн цуваа (stack) болгон хуваах аргоритом ба ажлын урсгал юм.
Энэ нь дараах байдалтай харагдана:
- Layer 1 (PR #1): Баазын Schema шинэчлэл болон migration кодууд (Target:
mainbranch) - Layer 2 (PR #2): Backend API болон Business logic (Target:
PR #1-ийн branch) - Layer 3 (PR #3): Frontend UI ба хэрэглэгчийн интерфейс (Target:
PR #2-ийн branch)
Ингэснээр хянагч нь бүх өөрчлөлтийг нэг дор биш, давхарга бүрээр нь салгаж, тус бүрт нь төвлөрөн хянах боломжтой болно.
Үндсэн боломжууд ба Давуу талууд
GitHub-ийн шинэ шинэчлэл нь зөвхөн UI харагдац төдий биш, хөгжүүлэгчийн CI/CD Pipeline-тай гүнзгий ууссан хэд хэдэн чухал боломжийг олгож байна:
- Бие биенээсээ хамааралтай тусдаа Review: Давхарга бүрийг тус тусад нь дифференци хийж хянана. Доод давхаргад өөрчлөлт ороход дээд давхаргууд нь автоматаар шинэчлэгдэн ребейз (automatic rebase) хийгдэнэ.
- Нэг даралтаар Merge хийх: Цуваанд байгаа бүх PR-ууд зөвшөөрөгдөж (approved), CI/CD test-үүдийг давсан тохиолдолд нэг сумаар бүгдийг нь Merge Queue рүү илгээж
mainbranch-д нэгтгэж болно. - Branch Protection & CI Checks: GitHub-ийн одоо байгаа бүх салбарын хамгаалалт, автомат тестийн шалгуур, кодын хамгаалалтын дүрэм журмын дагуу давхарга бүр дээр ажиллана.
- AI Agent Integration: GitHub Copilot болон бусад AI агентуудад зориулсан
gh-stackskill олгогдсон тул AI код үүсгэхдээ шууд хянахад хялбар Stacked PR форматаар кодоо илгээх боломжтой.
Хэрхэн ашиглаж эхлэх вэ?
Энэхүү боломжийг терминалаас болон GitHub-ийн вэб интерфэйсээс шууд ашиглах боломжтой.
Эхлээд GitHub CLI-ийн өргөтгөлийг суурилуулна:
gh extension install github/gh-stack
Суулгасны дараа та терминалаасаа шинэ stack үүсгэх, салбаруудаа холбох, болон багц PR-аа илгээх үйлдэгдлүүдийг хэдхэн тушаалаар гүйцэтгэх боломжтой болно.
Салбарын тэргүүлэгчдийн сэтгэгдэл
Нээлттэй эх сурвалж болон томоохон технологийн багууд энэхүү шинэчлэлд маш амжилттай оролцож байна:
"Бид сүүлийн хэдэн сарын турш Next.js дээр GitHub-ийн Stacked PR-ийг туршиж байна. Том боломжуудыг жижиг өөрчлөлтүүд болгон шилжүүлэхэд асар их тусалж, PR Review хийх процессыг хэд дахин хялбаршуулсан."
— Тим Нөйткенс (Tim Neutkens), Vercel компанийн Next.js багийн ахлагч
"Шинэ Stacked PRs функц үнэхээр гайхалтай. 5 өөр цуваа PR-ийг нэг дор Merge Queue рүү илгээх нь асар их цаг болон маргааныг хэмнэж байна."
— Жон Ресиг (John Resig), jQuery-г үүсгэн байгуулагч
Дүгнэлт
AI технологийн хөгжлийг дагаад код бичих хурд хэд дахин нэмэгдсэн ч түүнийг хянах, чанарыг баталгаажуулах үйл явц хамгийн том гацаа (bottleneck) болоод байв. GitHub Stacked Pull Requests нь энэхүү гацааг арилгах, ялангуяа монорепо болон дунд, том хэмжээний төслүүдийн кодын чанарыг өндөр түвшинд хадгалахад томоохон хувьсгал гарч байна.
Та одооноос эхлэн өөрийн репозитори дээр Stacked PR-ийг ашиглан кодын бүтэц болон review урсгалаа шинэ түвшинд гаргаарай!
Эх сурвалж: GitHub Blog & Official Changelog
Сэтгэгдэл
Ачаалж байна...