gh-domino: รีเบส Pull Request แบบ stacked ของคุณ
(github.com/134130)- เครื่องมือ GitHub CLI extension ที่ช่วย rebase stacked PR บน GitHub โดยอัตโนมัติ
- แม้จะมีเครื่องมือดี ๆ อย่าง Graphite หรือ stacked-pr อยู่แล้ว แต่สิ่งเหล่านี้มีข้อจำกัดในการเริ่มใช้งานที่สูงเกินไป
- เช่น ต้องสร้าง Stacked PR ผ่านเครื่องมือนั้นเท่านั้น แทนที่จะใช้ git ตามปกติ
- หรือมีตัวเลือกในไฟล์คอนฟิกภายในเครื่องจำนวนมากเกินไป
- ผู้พัฒนาจึงสร้างเครื่องมือ rebase ที่เรียบง่ายขึ้นมาเอง เพราะต้องการเครื่องมือแบบ zero-configuration ที่ใช้เพียงความสามารถของ PR บน GitHub ก็เพียงพอ
ตัวอย่าง
สมมติว่ามี Stacked PR ดังนี้:
- #102 (main <- stack-1)
- #103 (stack-1 <- stack-2)
- #104 (stack-2 <- stack-3)
หลังจาก merge PR #102 เข้า main แล้ว จำเป็นต้อง rebase PR #103 และ #104
- แม้จะเป็นการ rebase เพียงสอง PR ก็ยังเป็นงานที่ค่อนข้างน่ารำคาญ
- และถ้า graph ซับซ้อนขึ้นจากสาเหตุอย่างมี commit เพิ่มเข้ามาใน #102 การต้องนึกคำสั่ง git เพื่อหา common parent ก็เป็นเรื่องปวดหัวมาก
- อีกทั้ง stacked PR ไม่ใช่สิ่งที่ใช้งานบ่อยนัก แต่จะใช้เป็นครั้งคราวเมื่อจำเป็น จึงยิ่งลืมได้ง่าย
สามารถสั่งให้ระบบทำ rebase อัตโนมัติได้อย่างง่ายดายด้วยคำสั่งต่อไปนี้:
gh domino --dry-run
gh domino [--auto]
ดูตัวอย่างเพิ่มเติมได้ใน README.md
2 ความคิดเห็น
อ้าว นึกว่า GitHub ทำให้อัตโนมัติอยู่แล้วซะอีก ไม่ใช่เหรอ?!
ถ้าใช้ฟีเจอร์ safe delete branch ที่ GitHub มีให้ มันจะเปลี่ยน base branch ให้อัตโนมัติ แต่ในกรณีของ squash merge จะไม่มีความเชื่อมโยงใน git history เลยทำให้เกิดสถานะ conflict!
นอกจากนี้ ถ้าไม่ได้ใช้ safe delete แล้วลบ branch เองด้วย git ก็ยังมีความยุ่งยากที่ต้องไปเปลี่ยน base branch เองด้วยครับ!