วิธีการเขียน Commit message ให้มีประสิทธิภาพ


Git ถือเป็น Version control ที่มีประสิทธิภาพ และมีความจำเป็นสำหรับวงการพัฒนา Software เพื่อให้การใช้งานเป็นไปอย่างมีประสิทธิภาพ เราจำเป็นต้องเรียนรู้วิธีใช้ที่ถูกต้อง ถึงจะสามารถดึงประสิทธิภาพเหล่านั้นมาใช้ให้เป็นประโยชน์ได้

สำหรับบทความนี้จะเป็นการให้คำแนะนำในเรื่องของการเขียนข้อความในการ Commit แต่ละครั้ง

ทำไม Commit message ถึงสำคัญ??

ความแตกต่างในแต่ละ commit บอกได้เพียงว่ามีการเปลี่ยนแปลงเกิดขึ้น แต่สิ่งที่จะบอกถึงเหตุผลว่าทำไมถึงมีการเปลี่ยนแปลงคือ Commit message นั่นเอง ดังนั้น Commit message จึงเป็นช่องทางการสื่อสารที่ดีที่สุดถึงการเปลี่ยนแปลงที่เกิดขึ้น ระหว่างผู้ที่ทำการเปลี่ยนแปลงกับสมาชิกในทีมที่ทำงานอยู่บน Repository เดียวกัน

Commit message เป็นการลำดับเหตุการณ์ที่เกิดขึ้นตลอดช่วงเวลาแห่งการพัฒนาดังนั้น Message ที่ดีจะบอกเราได้ว่าช่วงเวลาใหนใครทำอะไรกันบ้าง แล้วเขียน Commit message อย่างไรถึงจะถือว่าดีละ?

Commit message ที่ดีควรที่จะต้องตอบคำถามสามข้อนี้ให้ได้.

  1. ทำไมต้อง Commit? ?
  2. Commit แต่ละครั้งแก้ปัญหาอะไรไปบ้าง?
  3. การ 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 ที่กำหนดขึ้นมาควรประกอบด้วยส่วนสำคัญสามส่วนดังต่อไปนี้

  1. Style : markup syntax,wrap margins, grammar, capitalization, punctuation.
  2. Content : Commit message body ควรประกอบด้วยข้อมูลอะไรบ้าง และข้อมูลอะไรที่ควรมีและไม่ควรมี
  3. Metadata : วิธีการอ้างอิงถึง issue ids, pull request number ต่าง ๆ

กฎ 7 ข้อสำหรับ Commit message ที่ดี

  1. แยกหัวข้อกับเนื้อหาออกจากกันด้วยบรรทัดเปล่า
  2. หัวข้อต้องประกอบด้วยตัวอักษรไม่เกิน 50 ตัวอักษร
  3. ตัวอักษรตัวแรกของประโยคต้องขึ้นต้นด้วยตัวใหญ่เสมอ
  4. หัวข้อต้องไม่จบด้วยประโยคปิด คือลงท้ายด้วยจุด (.)
  5. หัวข้อต้องสื่อถึงความจำเป็นที่่จะต้องทำ
  6. เนื้อหาต้องไม่เกิน 72 ตัวอักษร
  7. เนื้อหาต้องอธิบายถึงสิ่งเหล่านี้ เพราะอะไร และทำไมหรือย่างไร(What and Why vs How)

หวังว่าบทความพอจะเป็นประโยชน์อยู่บ้างไม่มากก็น้อย

แหล่งอ้างอิง
  1. How to Write a Git Commit message.
  2. Who-T
  3. Pro Git book
  4. Spring Boot on GitHub