Git Flow
Git Flow คือกระบวนการทำงาน manage source branch อย่างมีระบบ มีการใช้งานระบบ pull request สำหรับการ merge code ประกอบการ review code และมีการวาง branch policy ป้องกันการแก้ไขใน branch master และ develop
Branch management
การจัดการ branch จะมีหลักการดังนี้
master
branch ใช้สำหรับการเก็บ code ที่กำลังทำงานอยู่บน Production site จะต้องป้องกันการแก้ไข สามารถแก้ไขได้โดยการทำ pull request เข้าอย่างเดียวdevelop
branch ใช้สำหรับการพัฒนาในแต่ phase เช่น มีโครงการพัฒนาใน feature a, b, c ก็จะ add branch from master ที่เป็น production ล่าสุดมา หลังจากพัฒนา feature a, b, c เสร็จแล้วก็จะทำ pull request ขึ้นไปยัง master branch เพื่ออัพเดตปรับ versiondevelop/feature...
branch ใช้สำหรับการพัฒนา feature นั้น ๆ โดยเฉพาะdevelop/feature.../part...
(optional) ถ้ามีการพัฒนาหลายคนแนะนำให้แยก branch ทำงานเพื่อป้องกันการเกิด conflicthotfix/problem...
branch ใช้สำหรับการแก้ไข bug ไม่ว่าจะเป็น bug จาก Production site หรือจาก develop branch เมื่อแก้ไขเสร็จสิ้นก็จะทำ pull request กลับไปยังต้นทาง
Branch policy
จะต้องมีการตั้งค่า Branch master และ develop ให้ไม่สามารถ commit หรือ push code ได้ จะอนุญาตโดยการทำ pull request อย่างเดียว
Pull request
ทุกครั้งที่พัฒนาจบ feature หรือจบ task ให้ทำการสร้าง pull request merge ไปยังชั้นที่สูงกว่า 1 ระดับ ในขั้นตอนการสร้าง pull request จะต้องเขียน Changelog ที่เกิดขึ้นและ link กับ Work Item ทุกครั้ง
เมื่อ pull request มีสถานะ completed จะต้องเลือกวิธีการ Merge เป็น Squash Commit และทำการ delete source branch ทิ้ง
Code review (optional)
ในระหว่างขั้นตอนการสร้าง Pull request สามารถกำหนด Approval ได้ ซึ่งจะเชื่อมโยงกับการตั้งค่า Branch policy ว่าจะต้องมีผู้ Review ขั้นต่ำกี่ท่าน เป็นใครบ้าง ขั้นตอนนี้จะช่วยให้ code ที่ออกมาจาก developer หลาย ๆ ท่านออกมาในมาตรฐานเดียวกันและมีความ clean
เมื่อ pull request มีสถานะ merged แล้ว pipeline ที่ setup ไว้ให้ trigger pipeline ให้ทำงานทุกครั้งที่ code ใน branch นั้นๆเกิดความเปลี่ยนแปลง