ปัญหา
ฉันอยู่ในโครงการซอฟต์แวร์ที่มีนักพัฒนาประมาณ 10 คนเราแบ่งปันซอร์สโค้ดผ่าน Mercurial เรามีการพัฒนาและสาขาการผลิตต่อการเปิดตัว ซ้ำแล้วซ้ำอีกในระหว่างโครงการเรามีซอร์สโค้ดจากหนึ่งสาขาคือ v1 เข้าสู่ patch และบำรุงรักษาสาขาสำหรับซอฟต์แวร์รุ่นก่อนหน้าเช่น v2
ซึ่งส่งผลให้เวลาที่ใช้ในการสำรองการกระทำผิดหรือรหัส (อาจไม่ใช่ -QAd) การเข้าถึงและการปรับใช้ในสาขาที่ไม่ถูกต้องหากเราไม่สังเกตเห็นว่ารหัสผิดไป
สาขาและผสานการออกแบบ / วิธีการของเรา
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
ดังนั้นเราจะทำงานในสาขาพัฒนาการเผยแพร่จนกว่าจะถือว่าพร้อมแล้วจึงทำการปิดสาขาสำหรับการทดสอบ / UAT / สาขาการผลิตเดียวซึ่งการเผยแพร่และการบำรุงรักษาทั้งหมดเสร็จสิ้นแล้ว แท็กใช้เพื่อสร้างรุ่นของสาขานี้ ในขณะที่กำลังทดสอบ v1 จะมีการสร้างสาขาสำหรับ v2 และนักพัฒนาจะเริ่มทำงานกับคุณสมบัติใหม่
สิ่งที่มีแนวโน้มจะเกิดขึ้นก็คือนักพัฒนาซอฟต์แวร์จะต้องทำงานเนื่องจากสาขา v2-dev เป็น v1-dev หรือ v1-prod หรือแย่กว่านั้นพวกเขารวม v2-dev เข้ากับ v1-prod (หรือข้อผิดพลาดที่คล้ายกัน)
เราบอกนักพัฒนาซอฟต์แวร์ส่วนใหญ่ว่าไม่ควรเข้าถึงสาขา-prodแต่รหัสยังแอบย่องเข้ามากลุ่มนักพัฒนาอาวุโสอีกหลายคนคอยดูแลสาขา -prod
ควรสังเกตว่าในขณะที่ v2 เพิ่งเริ่มพัฒนาอาจยังมีบางส่วนที่ค่อนข้างหนักไปสู่ v1 เพื่อแก้ไขปัญหา Ie v1 อาจไม่เพียง แต่ได้รับแพตช์เล็ก ๆ แปลก ๆ
สิ่งที่เราได้ลองมาแล้ว
- มีสาขา -prod แยกจากกันพร้อมกับ gatekeepers สาขา -prod ควรเพิ่มคำเตือนผ่านชื่อและนักพัฒนาส่วนใหญ่ไม่จำเป็นต้องอยู่ในสาขานั้น สิ่งนี้ไม่ได้ลดปัญหาจริงๆ
- สร้างความตระหนักถึงปัญหานี้ในหมู่นักพัฒนาเพื่อพยายามทำให้พวกเขาระมัดระวังมากขึ้น อีกครั้งนี้ไม่ประสบความสำเร็จมาก
สาเหตุที่เป็นไปได้ที่ฉันเห็นสำหรับนักพัฒนาที่ยอมรับผิดสาขา
- ซับซ้อนเกินไปการออกแบบสาขา
- มีการพัฒนาเชิงรุกในหลายสาขาพร้อมกัน (โครงการจะแสดงอาการของการใช้แบบจำลองหิมะถล่ม )
- นักพัฒนาไม่เข้าใจ DVCS ดีพอ
คำถามที่ฉันอ่านซึ่งค่อนข้างเกี่ยวข้อง
ฉันได้อ่านคำถามนี้เกี่ยวกับการไม่ยอมรับผิดสาขาและฉันรู้สึกว่าคำตอบเกี่ยวกับตัวชี้นำภาพอาจเป็นประโยชน์ อย่างไรก็ตามฉันไม่เชื่อมั่นอย่างเต็มที่ว่าปัญหาที่เราประสบอยู่ไม่ใช่อาการของปัญหาพื้นฐานมากกว่า
ด้วยเบาะแสการมองเห็นเราสามารถรวมพวกมันไว้ในบรรทัดคำสั่งได้อย่างง่ายดายอย่างไรก็ตามประมาณครึ่งหนึ่งของทีมใช้คราสซึ่งฉันไม่แน่ใจว่าจะรวมคิวการมองเห็นอย่างไร
คำถาม
เราสามารถใช้วิธีการใดในรูปแบบของซอฟต์แวร์การจัดการโครงการหรือการกำกับดูแลเพื่อลด (หยุดนึกคิด) ให้กับสาขาที่ไม่ถูกต้องสละเวลาของเราหรือทำให้โค้ดที่ใช้งานของเราสกปรก
ความคิดเห็นเฉพาะเกี่ยวกับเหตุผลที่ฉันเชื่อว่าอาจมีส่วนร่วมตามที่ระบุไว้ข้างต้นจะได้รับการชื่นชม แต่นี่ไม่ควร จำกัด การตอบกลับของคุณ