นี่เป็นปัญหาที่ยุ่งยาก แต่มีหลายคนที่ต้องเผชิญ ฉันชอบที่จะใช้การตั้งค่า Gitflow เป็นจุดเริ่มต้น
การพัฒนา -> สิ่งใหม่ที่กำลังทำงานอยู่ใน
ระดับปริญญาโท -> สิ่งที่เสร็จสิ้นแล้วซึ่งต้องการการทดสอบการผลิต -> สิ่งที่ได้รับการเผยแพร่ไปยังการผลิต
ที่คุณสมบัติรอง (สั้นกว่า) ฉันสร้างสาขาจากการพัฒนาทำงานที่นั่นแล้วผสานสาขากลับไปสู่การพัฒนา
ที่ฟีเจอร์หลัก (ระยะยาว) ฉันสร้างสาขาจากการพัฒนาสร้างสาขาย่อยจากสาขานั้นจากนั้นผสานกลับไปที่สาขาแรก เมื่อคุณสมบัติที่สำคัญเสร็จสมบูรณ์แล้วกลับเข้าสู่สาขาการพัฒนามันจะไป
ในช่วงเวลาปกติ (ขึ้นอยู่กับโครงการ) ฉันรวมการพัฒนากลับเข้าที่หลักและเริ่มรอบการทดสอบ หากการแก้ไขใด ๆ เกิดขึ้นในการทดสอบพวกเขาจะทำในสาขาหลัก (สาขาย่อยแล้วผสานใน) และการพัฒนาสามารถดำเนินต่อไปในสาขาหลักในระหว่างการทดสอบ
เมื่อใดก็ตามที่มีการรวมต้นแบบเข้ากับการพัฒนาและการพัฒนาควรถูกรวมเข้ากับสาขาย่อยระยะยาว
ต้นแบบควรพร้อม (ในทางทฤษฎี) พร้อมสำหรับการผลิตเสมอ การพัฒนาควรพร้อมเสมอสำหรับการผลิต เหตุผลเดียวที่มีความแตกต่างคือให้ชุดคุณสมบัติที่เป็นของแข็งสำหรับผู้ทดสอบเพื่อทดสอบ
เมื่อพร้อมความมุ่งมั่นในต้นแบบที่ทดสอบจะถูกรวมเข้ากับการผลิตและการปรับใช้ในการผลิตที่เกิดขึ้นจากสาขานั้น HOTFIX ที่ต้องทำในกรณีฉุกเฉินสามารถเกิดขึ้นได้ในสาขาการผลิตโดยไม่ต้องรวมในต้นแบบ (ซึ่งอาจมีการเปลี่ยนแปลงที่ไม่ผ่านการทดสอบจำนวนมาก)
ต้นไม้ปกติของฉันดูเหมือน
LongTerm -> Development -> Master -> Production
LongTerm <- Development | |
| Development -> Master |
LongTerm <- Development -> Master |
Development <- Master |
Master -> Production
เป็นกฎทั่วไปของฉันที่ไม่มีการเปลี่ยนแปลงเดียวควรใช้เวลามากกว่าสองสามชั่วโมง ถ้าเป็นเช่นนั้นจะต้องมีการเปลี่ยนแปลงเล็กน้อย ถ้ามันเป็นคุณสมบัติที่ยิ่งใหญ่ (เช่น UI เขียนใหม่) แล้วมันจะไปในระยะยาวเพื่อให้การพัฒนาตามปกติสามารถดำเนินต่อไปในเวลาเดียวกัน โดยปกติแล้วสาขาของ LongTerm จะเป็นสาขาในท้องถิ่นเท่านั้นในขณะที่การพัฒนา, Master และ Production เป็นสาขาที่อยู่ห่างไกล สาขาย่อยใด ๆ ก็เป็นสาขาในท้องถิ่นเท่านั้น สิ่งนี้ทำให้ที่เก็บสะอาดสำหรับผู้อื่นโดยไม่สูญเสียประโยชน์ของ git ในชุดคุณลักษณะระยะยาว
อย่างไรก็ตามฉันต้องการที่จะทราบว่าการดำรงอยู่ของสาขาระยะยาวเป็นสิ่งที่หายาก โดยปกติงานของฉันทั้งหมดอยู่ในการพัฒนา เฉพาะเมื่อฉันมีฟีเจอร์ (ชุด) ที่จะใช้เวลานานจนฉันต้องสามารถทำงานกับอุปกรณ์ dev ปกติได้ด้วยฉันจะใช้สาขา LongTerm หรือไม่ ถ้ามันเป็นแค่ชุดของการเปลี่ยนแปลงที่ควรจะอยู่ด้วยกันแล้วฉันก็จะไม่รวมตัวกับนายจนกว่าจะทำเสร็จแล้ว