ฉันคิดว่าบทความนี้เป็นโมเดลการแยกสาขาที่ประสบความสำเร็จเป็นที่รู้จักกันดีในหมู่ผู้ใช้ DVCS ที่มีประสบการณ์
ฉันใช้hg
เป็นส่วนใหญ่ แต่ฉันจะโต้แย้งการอภิปรายนี้เป็นสิ่งที่ดีสำหรับ DVCS ใด ๆ
เวิร์กโฟลว์ปัจจุบันของเราคือผู้พัฒนาแต่ละคนลอกแบบต้นแบบธุรกรรมซื้อคืน เราเขียนโค้ดลงบน repo ในพื้นที่ของเราเองทำการทดสอบและถ้าทุกอย่างเข้ากันได้ดีกับมาสเตอร์
ดังนั้นเราจึงต้องการติดตั้งเซิร์ฟเวอร์ CI เช่น Jenkins และปรับปรุงขั้นตอนการทำงานของเราด้วยระบบการจัดเตรียมในอนาคต
ส่วนจริง
แบบจำลองดังกล่าวข้างต้นใช้งานได้ดี แต่กิ่งสามารถทำลาย CI ได้ สาขาฟีเจอร์ควรซิงค์กับจุดเริ่มต้น (ตามบทความมันจะเป็นdevelopment
สาขา) เพื่อทำให้ CI และการผสานราบรื่นใช่ไหม?
Say Alice และ Bob กำลังทำงานกับคุณสมบัติสองอย่าง แต่อลิซเสร็จในวันรุ่งขึ้น คุณสมบัติของ Bob ใช้เวลาหนึ่งสัปดาห์ เมื่อถึงเวลาที่บ๊อบเสร็จสิ้นการเปลี่ยนแปลงของเขาล้าสมัย (อาจจะมีการปรับโครงสร้างใหม่ / เปลี่ยนชื่อคลาสบางส่วน)
ทางออกหนึ่งคือนักพัฒนาทุกเช้าต้องดึงmaster/origin
เพื่อตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่ หากอลิซส่งมอบบ๊อบควรดึงและรวมเข้าไปในพื้นที่ทำงานของเขาเพื่อให้ฟีเจอร์สาขาของเขาทันสมัย
- นี่เป็นวิธีที่ดีหรือไม่?
- ควรสาขาเหล่านี้มีอยู่ใน repo หลัก (ไม่ใช่โคลนแบบโลคอลหรือไม่) ความหมายของนักพัฒนาทุกคนควรให้สิทธิพิเศษแก่ repo หลักใน GitHub / Bitbucket เพื่อให้สามารถสร้างสาขาใหม่ได้หรือไม่ หรือสิ่งนี้ทำในท้องถิ่น?
- สุดท้ายนำเสนอรูปแบบโดยบทความควรแบ่ง CI
origin/master
ถ้าสาขาไม่ได้ซิงค์กับ เนื่องจากเราต้องการสร้างงานทุกคืนผู้พัฒนาควรดึงและผสานก่อนที่จะออกจากงานและให้ CI ทำงานในแต่ละสาขาของฟีเจอร์เช่นกัน