ฉันกำลังพยายามเลือกเวิร์กโฟลว์ Git ที่เหมาะสมที่สุดสำหรับผลิตภัณฑ์ของเรา นี่คือพารามิเตอร์:
- เรามีการเปิดตัวรุ่นใหญ่สองสามครั้งต่อปีสมมติว่ามากที่สุด 10 รายการ
- เรามีผลิตภัณฑ์หลายเวอร์ชันที่ใช้งานอยู่ในเวลาเดียวกัน (บางคนอยู่ใน v10.1, บางคนใน v11.2 ฯลฯ )
- เราต้องสามารถทำงานกับหลาย ๆ รุ่นได้ในเวลาเดียวกัน (ดังนั้นเราจึงสามารถทำงานกับ v12.1 ได้ แต่เมื่อเราถึงจุดสิ้นสุดของการวางจำหน่ายเราจะเริ่มทำงานกับ v12.2 ในเวลาเดียวกัน)
- เราจำเป็นต้องสามารถเผยแพร่โปรแกรมแก้ไขด่วนเมื่อพบข้อบกพร่องที่สำคัญ
จนถึงตอนนี้เป็นวิธีที่ฉันคิดว่าสามารถใช้งานได้:
- ใช้ repo ระยะไกลเดียว
- สร้างสาขา 12.1 จากต้นแบบ
- สร้างฟีเจอร์ย่อยตาม 12.1, คอมมิชชันเหล่านั้นและรวมกลับเป็น 12.1, กด
- เมื่อเราต้องการเริ่มทำงานในรุ่นอนาคตให้สร้างสาขาใหม่ 12.2 จาก 12.1
- จากนั้นเมื่อทำงานกับคุณลักษณะสำหรับ 12.1 สร้างสาขาจาก 12.1 กระทำการเปลี่ยนแปลงและรวมเข้ากับทั้ง 12.1 และ 12.2 กด
- หากทำงานกับคุณลักษณะสำหรับ 12.2 ให้สร้างสาขาจาก 12.2 กระทำการเปลี่ยนแปลงและรวมเป็น 12.2 เพียงกด
- เมื่อรีลีส 12.1 เสร็จสมบูรณ์ให้รวมเข้าในมาสเตอร์และแท็กสาขาหลักด้วย 12.1
- หากจำเป็นต้องใช้โปรแกรมแก้ไขด่วนให้สร้างสาขาโปรแกรมแก้ไขด่วนจากสาขารีลีสที่เก่าแก่ที่สุดที่ต้องการทำการคอมมิทการเปลี่ยนแปลงและผสานกลับไปที่สาขารีลีสทั้งหมดสำหรับรีลีสนั้นและรีลีสในอนาคตที่อาจได้รับผลกระทบ ถ้าสาขาการปล่อยที่เสถียรล่าสุดได้รับผลกระทบให้ผสานมันเข้ากับมาสเตอร์
ฉันมีข้อกังวลเล็กน้อย:
- ฉันไม่แน่ใจว่าการรวมโปรแกรมแก้ไขด่วนจากสาขาเก่าเข้ากับสาขาใหม่จะเป็นกระบวนการที่ราบรื่นโดยเฉพาะหากมีการเปลี่ยนแปลงที่ทับซ้อนกันจำนวนมาก มันจะฉลาดกว่าที่จะต้องทำการแก้ไขด่วนด้วยตนเองในแต่ละสาขาในกรณีที่ดูเหมือนว่าจะมีข้อขัดแย้ง
- แบบจำลองเวิร์กโฟลว์ที่ฉันเห็นดูเหมือนจะไม่ทำให้กิ่งไม้มีชีวิตอยู่มากนักเมื่อทำรุ่นนี้รวมเข้ากับต้นแบบแท็กและนำออกแล้ว ปัญหาของฉันคือว่าฉันไม่มีความคิดที่ดีวิธีการจัดการสถานะของการเปิดตัวถ้าทั้งหมดที่ฉันมีแท็กในต้นแบบดูเหมือนง่ายต่อการแก้ไขด่วนในสาขาและจากนั้นฉันมีรุ่นที่ฉันสามารถกลับไป ที่มีโปรแกรมแก้ไขด่วนล่าสุด (ฉันยังสามารถติดแท็กโปรแกรมแก้ไขด่วนในรุ่น) ไม่แน่ใจว่ามีวิธีที่ฉันสามารถย้อนกลับไปภายในต้นแบบและมีสำเนาของรุ่นที่มีโปรแกรมแก้ไขด่วนที่ใช้และปรับปรุงแท็กนั้น
ความคิดเห็นเป็นที่ชื่นชมในสิ่งที่ฉันอาจมองข้ามหรือทำสิ่งที่ดีกว่าให้สำเร็จตามข้อกำหนดที่ฉันได้ระบุไว้