วิธีการเขียน Commit message ให้มีประสิทธิภาพ
Git ถือเป็น Version control ที่มีประสิทธิภาพ และมีความจำเป็นสำหรับวงการพัฒนา Software เพื่อให้การใช้งานเป็นไปอย่างมีประสิทธิภาพ เราจำเป็นต้องเรียนรู้วิธีใช้ที่ถูกต้อง ถึงจะสามารถดึงประสิทธิภาพเหล่านั้นมาใช้ให้เป็นประโยชน์ได้
สำหรับบทความนี้จะเป็นการให้คำแนะนำในเรื่องของการเขียนข้อความในการ Commit แต่ละครั้ง
ทำไม Commit message ถึงสำคัญ??
ความแตกต่างในแต่ละ commit บอกได้เพียงว่ามีการเปลี่ยนแปลงเกิดขึ้น แต่สิ่งที่จะบอกถึงเหตุผลว่าทำไมถึงมีการเปลี่ยนแปลงคือ Commit message นั่นเอง ดังนั้น Commit message จึงเป็นช่องทางการสื่อสารที่ดีที่สุดถึงการเปลี่ยนแปลงที่เกิดขึ้น ระหว่างผู้ที่ทำการเปลี่ยนแปลงกับสมาชิกในทีมที่ทำงานอยู่บน Repository เดียวกัน
Commit message เป็นการลำดับเหตุการณ์ที่เกิดขึ้นตลอดช่วงเวลาแห่งการพัฒนาดังนั้น Message ที่ดีจะบอกเราได้ว่าช่วงเวลาใหนใครทำอะไรกันบ้าง แล้วเขียน Commit message อย่างไรถึงจะถือว่าดีละ?
Commit message ที่ดีควรที่จะต้องตอบคำถามสามข้อนี้ให้ได้.
- ทำไมต้อง Commit? ?
- Commit แต่ละครั้งแก้ปัญหาอะไรไปบ้าง?
- การ Commit มีผลกระทบอะไรบ้าง?
หาก Commit message ของเราไม่สามารถตอบคำถามเหล่านี้ได้ นั้นแสดงว่า Commit message นั้นไม่มีประโยชน์อะไรเลยเพราะคนที่มา Review เขาไม่สามารถไล่ดู code ที่มีการเปลี่ยนแปลงได้ในทุก ๆ Commit เพื่อดูว่าเราทำอะไรในแต่ละ Commit ไปบ้าง
แล้วทำยังไงถึงจะได้ Commit message ที่ดีละ?
จริง ๆ แล้วไม่มีกฎหรือรูปแบบที่ตายตัวเกี่ยวกับ Commit message แต่โดยพื้นฐานแล้วควรต้องมี logical change อย่างน้อย 1 อย่างเช่น เพิ่ม Feature ใหม่หรือแก้บักอะไร แต่หากไม่สามารถอธิบายได้ด้วยข้อความสั้น ๆ ได้นั่นแสดงว่า Commit นั้นใหญ่หรือซับซ้อนเกินไป ควรแยก Commit ออกเป็นส่วน ๆ
ทีมต้องมีข้อกำหนดที่เกี่ยวกับ Commit Log ที่ตายตัวเพื่อให้สมาชิกทุกคนทำตามแนวทางเดียวกันเพื่อที่จะได้มาซึ่อ Revision history ที่มีประโยชน์ Commit message pattern ที่กำหนดขึ้นมาควรประกอบด้วยส่วนสำคัญสามส่วนดังต่อไปนี้
- Style : markup syntax,wrap margins, grammar, capitalization, punctuation.
- Content : Commit message body ควรประกอบด้วยข้อมูลอะไรบ้าง และข้อมูลอะไรที่ควรมีและไม่ควรมี
- Metadata : วิธีการอ้างอิงถึง issue ids, pull request number ต่าง ๆ
กฎ 7 ข้อสำหรับ Commit message ที่ดี
- แยกหัวข้อกับเนื้อหาออกจากกันด้วยบรรทัดเปล่า
- หัวข้อต้องประกอบด้วยตัวอักษรไม่เกิน 50 ตัวอักษร
- ตัวอักษรตัวแรกของประโยคต้องขึ้นต้นด้วยตัวใหญ่เสมอ
- หัวข้อต้องไม่จบด้วยประโยคปิด คือลงท้ายด้วยจุด (.)
- หัวข้อต้องสื่อถึงความจำเป็นที่่จะต้องทำ
- เนื้อหาต้องไม่เกิน 72 ตัวอักษร
- เนื้อหาต้องอธิบายถึงสิ่งเหล่านี้ เพราะอะไร และทำไมหรือย่างไร(What and Why vs How)
หวังว่าบทความพอจะเป็นประโยชน์อยู่บ้างไม่มากก็น้อย
แหล่งอ้างอิง