Аварга том PR-уудын төгсгөл: GitHub "Stacked Pull Requests"-ийг албан ёсоор бүх хөгжүүлэгчдэд нээлээ
Хөгжүүлэгч бүрийн хамгийн сайн мэддэг хар дарсан зүүд бол 2,500 мөрийн өөрчлөлттэй, 40 файл хамарсан аварга том Pull Request (PR) юм. Ийм PR-ийг багийнхан нь хэдэн өдрөөр тойрч зугтаадаг эсвэл кодтойгоо бүрэн танилцалгүй зүгээр л “LGTM! 👍” гээд нүдээ анин Approve дарчихдаг талтай. Тэр тусмаа орчин үед AI coding агентууд хэдхэн минутын дотор асар их хэмжээний код үйлдвэрлэдэг болсон энэ цаг үед кодын чанарыг хянаж (code review), алдаагүй нэгтгэх үйл явц улам хүнд ачаалал болж хувираад байв.
Тэгвэл энэ асуудлыг сууриар нь шийдвэрлэхээр GitHub олон сарын турш туршиж байсан "Stacked Pull Requests" функцийг албан ёсоор ерөнхий хэрэглээнд буюу GA (Generally Available) болгон нийт хөгжүүлэгчдэд нээлээ.
Stacked PR гэж чухам юу вэ?
Уламжлалт ажлын урсгалд (workflow) та шинэ feature хөгжүүлэхийн тулд main салаанаас нэг feature branch үүсгээд, түүн дээрээ өгөгдлийн бааз, backend logic, API endpoint, frontend UI гээд бүх өөрчлөлтөө нэг дор чихдэг. Үүнийг тойрохын тулд салаанаас дахин салаа үүсгэж болох ч Git дээр тэдгээрийг зохицуулах нь гараар хийх git rebase-ийн жинхэнэ там болдог байв.
Харин Stacked PRs (Стеклэсэн таталтын хүсэлтүүд) нь томоохон өөрчлөлтийг бие даасан, логик дараалал бүхий жижиг “давхаргууд” (layers) болгон цуваагаар байршуулах арга барил юм. Жишээлбэл:
- PR 1: Өгөгдлийн сангийн миграци ба схем
- PR 2: Бизнес логик ба үйлчилгээний сервисүүд (PR 1 дээр суурилсан)
- PR 3: REST/GraphQL API layer (PR 2 дээр суурилсан)
- PR 4: Хэрэглэгчийн интерфэйс (UI компонент)
Ингэснээр хянагч (reviewer) нь аварга бүтцийг нэг амьсгаагаар харах гэж ядрахгүйгээр давхарга бүрийг 100–200 мөрөөр нь тус тусад нь сайтар шинжлэн батлах (approve) боломжтой болно. Урьд өмнө нь зөвхөн Meta, Google, Uber зэрэг аваргууд Phabricator, Gerrit эсвэл Graphite зэрэг тусгай хэрэгслээр энэ урсгалыг шийддэг байсан бол одоо GitHub-ийн экосистемд шууд эх хэлбэрээрээ нэвтэрлээ.
Гараар Rebase хийх там ба Stale Approval-ийн шийдэл
GitHub уг боломжийг туршилтын шатнаас GA болгохдоо инженерүүдийн өдөр тутмын хамгийн том шаналалуудыг шийдэж өгчээ:
- Код өөрчлөгдөөгүй бол Approval хадгалагдана: Өмнө нь суурь салаанд (base branch) шинэ коммит нэмэгдэж
rebaseхийх төдийд тухайн PR-ийн авсан байсан бүх “Approved” төлөв хүчингүй болдог (dismissed stale reviews) байсан. Шинэ шинэчлэлтээр GitHub уг өөрчлөлт нь кодын логикт нөлөөлөөгүй зөвхөн стек шинэчлэлт гэдгийг таньж, өмнөх баталгаажуулалтыг хэвээр хадгална. - Commit signing бүрэн дэмжигдэнэ: Стек дахь дундын салаануудыг автоматаар rebase хийх явцад коммитын криптограф гарын үсэг алдагдахгүй, GitHub өөрөө Signed Replacement Commit үүсгэн анхны зохиогчийн мэдээллийг найдвартай хадгална.
- Base branch устсан ч задарч унахгүй: Хэрэв стек дундах нэг PR нэгдээд түүний салаа уствал, түүн дээр тулгуурласан дараагийн бүх дээд PR-ууд автоматаар доод талын амьд салаа руу шилжин онилогдоно (automatic retargeting).
Merge Queue болон Async Merge API-тай хорших нь
Нэг багцын 4 өөр PR батлагдлаа гэхэд тэдгээрийг нэг нэгээр нь гараар дарж merge хийх шаардлагагүй болжээ.
GitHub-ийн Merge Queue одоо стеклэсэн PR-уудыг нэгдмэл нэг бүлэг (single merge group) гэж үзэн CI/CD тестүүдийг зэрэг гүйлгэж, ямар ч конфликтгүйгээр найдвартай нэгтгэнэ. Мөн шинээр гарсан Async Merge API нь автоматжуулалтын системүүдэд хүсэлтийг асинхрон горимоор илгээж, том хэмжээний репозиторуудын хурдыг сааруулахгүй байх дэд бүтцийг хангасан байна.
GitHub-ийн мэдээлснээр, туршилтын хугацаанд платформын шилдэг 1% репозиторуудын 66%-аас илүү нь Stacked PR ашиглаж эхэлсэн бөгөөд тэдний кодоо эцсийн хувилбарт нэгтгэх дундаж хугацаа (time-to-merge) 5% сайжирч, нийт мерж хийгдсэн кодын хэмжээ ижил төрлийн төслүүдтэй харьцуулахад 9% өссөн үзүүлэлт гарчээ.
AI агентуудын эрин үед код бүтээх шинэ соёл
Энэхүү шинэчлэл нь ялангуяа хиймэл оюунт агентуудтай хамтран ажилладаг багуудад ус агаар мэт хэрэгтэй. Өмнө нь Copilot Workspace эсвэл автомат агентууд бүхэл бүтэн системийг шинэчлээд аварга том diff үүсгэдэг байсан бол одоо агентууд gh-stack чадварыг (skill) ашиглан ажлаа логик дарааллаар нь задалж, өөрөө стек болгон илгээх боломжтой болсон юм.
Хөгжүүлэгчид өөрсдийн терминалаас дараах CLI нэмэлтийг суулган шууд ашиглаж эхлэх боломжтой:
gh extension install github/gh-stack
Код хянах үйл явц гэдэг бол зүгээр нэг алдаа хайх биш, харин багийн гишүүд хоорондоо системээ ойлголцох чухал харилцаа юм. GitHub-ийн Stacked PRs функц нь том өөрчлөлтүүдийг хүний тархи хүлээн авахад эвтэйхэн, аюулгүй хэмжээнд задлах шинэ алтан стандартыг бүх нийтийн хэрэглээнд авчирлаа.
Эх сурвалж: GitHub Changelog (github.blog) — Stacked pull requests generally available
Сэтгэгдэл
Ачаалж байна...