git-workflow-gitflow
วันนี้มีโอกาสไปแบ่งปันเรื่อง Branching Strategy
ในงาน Thailand Agile Coaching Meetup 2/2559 ตอน Game Game และ Game
ซึ่งจัดที่บริษัท THiNKNET

โดยเนื้อหาเป็นแนวคิดสำหรับ
การจัดการความเสี่ยงอย่างหนึ่งในนั้นคือ เรื่อง Branching
แต่สิ่งที่ไม่เคยคิดกันต่อก็คือการ Merging
มีรายละเอียดคร่าว ๆ ดังต่อไปนี้

เริ่มต้นด้วยปัญหาที่ได้รับจาก Cargo Cult

หนึ่งวิธีในการแก้ไขก็คือ
การทำ branching ของ source code ใน Version Control System

คำถามคือ แล้วเราจะทำการ branching แบบไหนล่ะ ?
คำตอบของหลาย ๆ คนก็คือ
ทำตามบริษัทใหญ่ ๆ สิ หรือบริษัทที่มันแจ่ม ๆ
ยกตัวอย่างเช่น บางคนบอกว่าทำตาม Google สิ
แสดงดังรูป

CC51F790-D070-47ED-84DA-6C8D617F72BA

แต่คนส่วนใหญ่กลับไม่อ่านข้อนี้ !!

Screen Shot 2559-04-22 at 2.28.45 PM

คำถามต่อไปคือ
แนวทางเหล่านี้มันเหมาะสมกับระบบงานของเราหรือไม่ ?
แนวทางเหล่านี้มันเหมาะสมกับทีมของเราหรือไม่ ?
แนวทางเหล่านี้ได้รับการสนับสนุนจากฝ่าย management หรือไม่ ?

ถ้าได้รับคำตอบที่ดี ก็น่าจะทำให้ผลออกมามันดี
แต่ส่วนใหญ่จะได้ผลตรงกันข้าม !!

มาดูกันหน่อยว่ารูปแบบของการ Branching มีอะไรบ้าง ?

  • Integration branch หรือ Main/Trunk/Master
  • Release branch
  • Feature/task branch
  • Shelving branch
  • Fork and pull request
  • No branch (feature toggle)

โดยสรุปแล้วรูปแบบของการ braching ที่ได้พูดมี 3 แบบ

ประกอบไปด้วย

  1. No branching
  2. Branching by feature
  3. Branching by release

จะเลือกวิธีการไหน ต้องตอบให้ได้ว่า
วิธีการที่ทำอยู่นั้นเป็นอย่างไร ?
ปัญหาในปัจจุบันคืออะไร ?
ปัจจุบันนโยบายของบริษัทเป็นอย่างไร ? (องค์กรเป็นแบบไหน branching ก็เป็นแบบนั้น)
คำตอบจากคำถามเหล่านี้
จะนำไปสู่แนวทางการแก้ไขต่อไป

ส่วนการนำไปใช้งานจริง ๆ นั้น
อาจจะนำแนวคิดต่าง ๆ มาใช้งานร่วมกัน (Hybrid approach)
และสุดท้ายก็นำเครื่องมือต่าง ๆ มาช่วยเหลือ
เพื่อลด overhead ต่าง ๆ ลงไป

ดังนั้นให้เข้าใจความต้องการของตัวเอง
หรือทำความเข้าใจกับปัญหาที่พบก่อนนะครับ

ข้อคิดสะกิดใจ
ถ้าทำไปแล้วรู้สึกว่ามันลำบาก หรือ มีปัญหามากกว่าเดิม
แสดงว่า สิ่งที่ทำอยู่ไม่น่าจะถูกต้อง หรือ เหมาะสมนะ
ต้องทำการแก้ไข และ ปรับเปลี่ยนต่อไปอย่างต่อเนื่อง

และวันนี้คุณทำการ commit, push และ merge code แล้วหรือยัง ?
และทำบ่อยหรือไม่ อย่างไร ?

โดย slide อยู่ที่นี่