เราเป็นร้าน ISV ขนาดเล็กและเรามักจะจัดส่งผลิตภัณฑ์รุ่นใหม่ทุกเดือน เราใช้การโค่นล้มเป็นที่เก็บรหัสและ Visual Studio 2010 เป็น IDE ของเรา ฉันรู้ว่าผู้คนจำนวนมากกำลังสนับสนุน Mercurial และระบบควบคุมแหล่งข้อมูลแบบกระจายอื่น ๆ แต่ ณ จุดนี้ฉันไม่เห็นว่าเราจะได้ประโยชน์จากสิ่งเหล่านี้อย่างไร แต่ฉันอาจผิด
ปัญหาหลักของเราคือวิธีการทำให้สาขาและลำต้นหลักตรงกัน
นี่คือวิธีที่เราทำสิ่งต่าง ๆ ในวันนี้:
- ปล่อยเวอร์ชันใหม่ (สร้างแท็กในการโค่นล้มโดยอัตโนมัติ)
- ทำงานต่อในลำตัวหลักที่จะเปิดตัวในเดือนหน้า
และวงจรจะทำซ้ำทุกเดือนและทำงานได้อย่างสมบูรณ์ ปัญหาเกิดขึ้นเมื่อจำเป็นต้องมีการเปิดตัวบริการด่วน เราไม่สามารถปล่อยมันจากลำต้นหลัก (2) เนื่องจากอยู่ภายใต้การพัฒนาอย่างหนักและมันไม่เสถียรพอที่จะปล่อยอย่างเร่งด่วน
ในกรณีเช่นนี้เราจะทำสิ่งต่อไปนี้:
- สร้างสาขาจากแท็กที่เราสร้างในขั้นตอน (1)
- แก้ไขข้อผิดพลาด
- ทดสอบและปล่อย
- ผลักดันการเปลี่ยนแปลงกลับไปที่ลำต้นหลัก (ถ้ามี)
ปัญหาที่ใหญ่ที่สุดของเราคือการรวมสองสิ่งนี้ (สาขากับหลัก) ในกรณีส่วนใหญ่เราไม่สามารถพึ่งพาการรวมอัตโนมัติได้เช่น:
- มีการเปลี่ยนแปลงมากมายกับลำต้นหลัก
- การรวมไฟล์ที่ซับซ้อน (เช่นไฟล์ Visual Studio XML เป็นต้น) ทำงานได้ไม่ดีนัก
- นักพัฒนา / ทีมอื่นทำการเปลี่ยนแปลงที่คุณไม่เข้าใจและคุณไม่สามารถรวมมันได้
ดังนั้นสิ่งที่คุณคิดว่าเป็นแนวทางปฏิบัติที่ดีที่สุดในการทำให้ทั้งสองเวอร์ชันแตกต่างกัน (สาขาและหลัก) ในการซิงค์ คุณทำอะไร?