25 คะแนน โดย ironlung 2023-06-14 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

*เมื่อรู้สึกลำบากใจกับการเขียน git commit message

  • commit message ที่ใส่อีโมจิและหมายเลข issue จะติดตามได้ง่ายและดูดี
  • But ยิ่ง commit message ยาวและซับซ้อน ก็ยิ่งไม่สะดวกทุกครั้งและพลาดบ่อย
  • การต้องหาอีโมจิที่เหมาะสมทุกครั้งเป็นเรื่องทรมาน

*บังคับใช้ git commit message ด้วย Git Hooks

  • Git Hooks คือความสามารถในการรันสคริปต์ที่เรากำหนดไว้เมื่อเกิดอีเวนต์ที่เกี่ยวข้องกับ Git
  • ฟีเจอร์นี้แบ่งเป็น server hooks และ client hooks

*server hooks: ใช้ฟีเจอร์ push rule ของ Git

  • หากใส่สคริปต์ตรวจสอบ commit message ไว้ใน pre-receive hook ก็จะป้องกันไม่ให้ push ขึ้นเซิร์ฟเวอร์
  • ใน GitLab สามารถใช้ฟีเจอร์ push rule เพื่อตรวจสอบ commit message ด้วย regular expression ได้
  • หากตรวจพบ commit message ที่ไม่เป็นไปตาม regular expression ก็จะปฏิเสธ push นั้นและทำให้เกิดข้อผิดพลาด

*client hooks: ตรวจสอบล่วงหน้าก่อน push

  • สามารถสร้างสคริปต์ใน commit-msg hook ซึ่งทำงานก่อนการทำ commit เสร็จสมบูรณ์ เพื่อตรวจสอบ commit message ได้
  • หากต้องการแก้ไข commit message สามารถเขียนสคริปต์ที่เกี่ยวข้องใน prepare-commit-msg hook ได้

*วิธีทำ commit message อัตโนมัติของ Infograb

  • สร้างระบบทำ commit message อัตโนมัติด้วย Husky และ Commitlint
  • Husky คือ npm module ที่ช่วยจัดการ Git Hooks โดยจะสร้างไฟล์ hook ที่มีสคริปต์อยู่ภายใต้ไดเรกทอรี .husky จากนั้นเมื่อรันคำสั่ง npx husky install สคริปต์นั้นจะถูกลงทะเบียนกับ git
  • commitlint เป็นเครื่องมือสำหรับจัดการ commit convention ได้ง่ายและตรวจสอบ commit message โดยเขียน commit convention ที่ทีมกำหนดไว้ในรูปแบบ JSON แล้วใช้คำสั่ง commitlint เพื่อตรวจสอบข้อความ

1)กำหนด commit convention ในรูปแบบของ commitlint

  • กำหนดคุณสมบัติที่เหมาะกับแต่ละทีมในไฟล์ commitlint.config.ts โดยอิงจากโครงสร้างพื้นฐานของ commit message

2)ลงทะเบียน commitlint กับ Husky

  • ลงทะเบียนคำสั่ง commitlint ใน commit-msg hook โดยใส่สคริปต์ไว้ในไฟล์ .husky/commit-msg

3)เพิ่มระบบอัตโนมัติ

  • ทำให้งานอย่างการติดอีโมจิหรือแทรกหมายเลข issue เป็นอัตโนมัติ
  • ในทีม Product ของ Infograb ตั้งค่าให้เมื่อกรอกแค่ type (feat, fix) ระบบจะเพิ่มอีโมจิโดยอัตโนมัติ, แก้ตัวอักษรแรกของ type ให้เป็นตัวพิมพ์ใหญ่โดยอัตโนมัติ, และถ้ามีหมายเลข issue อยู่ใน branch ก็จะเติมหมายเลข issue ที่ footer ให้อัตโนมัติ
  • สามารถใส่สคริปต์อัตโนมัติไว้ใน prepare-commit-msg hook ได้

2 ความคิดเห็น

 
yangeok 2023-06-20

ใช้คู่กับ commitizen ก็ดีเหมือนกัน

 
roxie 2023-06-24

ขอบคุณสำหรับเครื่องมือดีๆ ครับ