Git Flow
#HelloGameDev #HelloErmine #HelloWorld2021
Last updated
Was this helpful?
#HelloGameDev #HelloErmine #HelloWorld2021
Last updated
Was this helpful?
คือ หนึ่งในมาตรฐานที่กำหนดรูปแบบของการแตก branch ให้เป็นระบบระเบียบเพื่อตอบโจทย์ใน Development process โดยแบ่ง branch ออกเป็น 5 กลุ่มใหญ่ ๆ ดังนี้
master
develop
feature
release
hotfix
และขั้นตอนการเขียนโค้ดทั้งหมดจะอยู่ใน develop และ feature เสมอ โดยช่วงเริ่มต้นขึ้นโครงโปรเจคอาจจะทำใน develop แต่เมื่อโค้ดพื้นฐานพร้อมแล้ว ก็แยก branch ตาม Feature เพื่อเขียนโค้ด ซึ่งก็คือ branch ที่ชื่อว่า feature นั่นเอง
สำหรับ develop นิยมมีเพียง branch เดียว แต่สำหรับ feature จะแยกเป็น sub branch โดยใช้ชื่อตาม Feature นั้น ๆ
เมื่อพัฒนา feature ไหนเสร็จและพร้อมจะ release ก็จะ merge เข้าไปใน develop เลย ส่วน feature ที่ยังไม่พร้อม release ก็ปล่อยไว้อย่างนั้นก่อน
เมื่อถึงเวลาอันสมควรที่จะ release เพื่อเตรียมขึ้น production แล้ว ก็จะแตก branch ออกมาเป็น release โดยมี sub branch เป็นชื่อเวอร์ชันที่ต้องการ
ซึ่งการแตกเข้าสู่ release นี้มีไว้เพื่อให้ QA/Tester ทำการทดสอบโปรแกรมของเราให้ผ่านก่อนที่จะขึ้น production นั่นเอง ดังนั้น ถ้ามี issue เกิดขึ้นระหว่างนี้ก็ต้องแก้ไขภายในส่วนนี้ให้เรียบร้อยก่อน และเมื่อผ่านมาตรฐานของ QA/Tester เรียบร้อยแล้ว ก็ถึงเวลาเตรียมพร้อมเข้าสู่ master
หลังจากนำโค้ดจากใน master ไปขึ้น production ได้แล้ว ต่อมา...สำหรับการ finish branch ของ release จะต้อง merge เข้า master และ develop ทุกครั้ง ส่วนสาเหตุที่ต้อง merge เข้า develop ด้วยก็เพราะว่ามันมักมีโค้ดที่แก้ issue ในระหว่างการทดสอบของ QA/Tester เพิ่มเข้ามา
จะเห็นว่าที่ master นั้นจะเป็นโค้ดที่สมบูรณ์ที่สุด (ของเวอร์ชันนั้น ๆ) และไม่มีการ commit เข้าไปตรง ๆ เพราะมาจากการ merge ของ release เท่านั้น ดังนั้น master จึงมีแต่โค้ดที่เสร็จสมบูรณ์ ทำให้เวลา rollback แบบกะทันหันก็สามารถทำได้ โดยไม่ต้องกังวลว่าจะมีปัญหาอะไรหรือไม่
และในกรณีที่ production ตัวล่าสุดเกิด critical issue (ปัญหาหนัก ๆ) ขึ้นมา แต่ไม่ถึงกับต้อง rollback ก็จะมี hotfix เพื่อเข้ามาแก้ปัญหานี้ให้โดยเฉพาะ
ส่วนหน้าที่ของ hotfix ก็ตามชื่อของมัน คือมีไว้แก้ bug บน production แบบเร่งด่วน โดย hotfix จะมี sub branch เป็นชื่อเวอร์ชัน (ซึ่งนิยมเปลี่ยนเฉพาะเลขของ Patch version)
เมื่อแก้ไขเสร็จแล้วก็จะ merge เข้าสู่ master และ develop เหมือนกับ release
และนี่ก็คือรูปแบบทั้งหมดของ Git flow ที่ถูกออกแบบมาให้ตอบโจทย์ในการพัฒนาโปรเจคใหญ่ ๆ โดยจะเห็นว่า Git flow จะช่วยให้เขียนโค้ดไม่ซับซ้อนวุ่นวาย บริหารและจัดการ feature ต่าง ๆ ได้ง่าย รองรับ process ที่ต้องผ่าน QA/Tester ก่อนจะขึ้นสู่ production และสามารถตอบโจทย์สำหรับการรับมือกับ issue ต่าง ๆ ที่สามารถเกิดขึ้นได้ตลอดเวลาอีกด้วย