ฉันเห็นสาขานักพัฒนาซอฟต์แวร์ที่ใช้ในสองสถานการณ์หลัก:
ชุมชนโอเพ่นซอร์สที่สาขาเหล่านี้เป็นที่เก็บส้อมจริงเพื่อให้ผู้ดูแลโครงการสามารถล็อคการเข้าถึงที่เก็บข้อมูลหลักและต้องการการรวมผ่านคำขอดึง สิ่งนี้ทำให้ชีวิตยากขึ้นสำหรับผู้มีส่วนร่วม แต่ง่ายกว่าสำหรับผู้ดูแลซึ่งแน่นอนว่าเป็นจุดและนี่คือรูปแบบที่ประสบความสำเร็จอย่างมากใน GitHub
ทีมและองค์กรที่ไม่มีการรวมกันอย่างต่อเนื่องและมีประวัติความไม่แน่นอนในการปรับใช้ของพวกเขาหรือแย่กว่านั้นคือความไม่แน่นอนในการสร้าง ทีมเหล่านี้พยายามใช้สาขานักพัฒนาซอฟต์แวร์เพื่อป้องกันความมั่นคงของการฉีดยาและผลลัพธ์คือ - โดยทั่วไป - ระยะเวลาการผสานที่ยาวนานและเจ็บปวดมากก่อนการเปิดตัวตามด้วยช่วงเวลาการรักษาเสถียรภาพที่ยาวนานและเจ็บปวดมากขึ้นซึ่งบางครั้ง ไม่ได้เกิดขึ้นจนกระทั่งหลังจากที่ปล่อย
ฉันไม่ต้องการให้เรื่องนี้น่ารำคาญว่าทำไมคุณถึงต้องการ CI แต่ก็ชัดเจนจากคำถามของคุณที่คุณรู้ว่าคุณไม่ได้รวมการเปลี่ยนแปลงบ่อยพอดังนั้น IMO จึงไม่มีประเด็นที่จะต้องแก้ไขปัญหานี้
นอกจากว่าคุณจะทำงานในทีมที่กระจายตัวทางภูมิศาสตร์โดยมีความต้องการ "ประตู" การเปลี่ยนแปลงจากนักพัฒนาภายนอกโมเดลรุ่นต่อสาขาสำหรับนักพัฒนาจะไม่สมเหตุสมผล โดยเฉพาะอย่างยิ่งมันไม่ได้ทำให้รู้สึกกับคอมไพล์เพราะนักพัฒนาทุกคนอยู่แล้วในทางเทคนิคมีเธอ / พื้นที่เก็บข้อมูลของตัวเอง องค์กรส่วนใหญ่ควรบูรณาการบ่อยมาก - เช่นเดียวกับหลายครั้งต่อวัน
ปัจจุบันฉันเป็นส่วนหนึ่งของกลุ่มผู้มีส่วนร่วมประมาณ 35 คนแบ่งออกเป็น 4 ทีมคนส่วนใหญ่เช็คอินอย่างน้อยวันละ 2-3 ครั้งบางคน 10-15 ครั้ง; เป็นเรื่องผิดปกติที่จะเห็นงานสร้างที่เสียหายและหายากมากสำหรับพวกเขาที่จะไม่สามารถใช้งานได้นานกว่าสองสามนาที Git จัดการกับการควบรวมกิจการได้อย่างง่ายดายส่วนใหญ่เวลาที่สาขานักพัฒนาระยะไกลเป็นเพียงค่าใช้จ่ายที่ไม่จำเป็น เพียงดึงรวมภายในเครื่องแล้วทำการทดสอบก่อนที่จะผลักดันมันง่ายมาก
ถ้าคุณอย่างต้องเลื่อนการบูรณาการเพื่อที่จะปกป้องความมั่นคงของสาขาต้นแบบโดยทั่วไปรูปแบบการพิสูจน์แล้วคือการใช้สาขาเสถียร - บางครั้งเรียกว่าสาขาการพัฒนาที่อธิบายไว้ในที่ประสบความสำเร็จ Git รูปแบบแตกแขนง หากนักพัฒนาไม่สามารถรวมเข้ากับสาขานี้ได้ (ซึ่งต้องการสร้างเท่านั้นไม่ทำงานอย่างไม่มีที่ติ) อย่างน้อยวันละครั้งคุณมีปัญหาด้านคุณภาพ / วินัยและไม่ใช่ปัญหาการแก้ไขปรับปรุง การครอบคลุมมันโดยใช้สาขานักพัฒนาซอฟต์แวร์ที่ไม่รวมตัวกันทำให้เกิดปัญหาเท่านั้นและโดยการทำเช่นนั้นจริง ๆ แล้วการรวมกันในที่สุดก็เจ็บปวดและไม่มั่นคงมากกว่าที่พวกเขาต้องการจริงๆ
สาขาฟีเจอร์ไม่ได้เลวร้ายที่สุด แต่ IMO มีโครงการน้อยมากที่ใหญ่พอที่จะรับประกันได้ หากโครงการของคุณมีขนาดใหญ่มาก (เช่นมีฟีเจอร์มากมายที่ทำงานได้ในครั้งเดียว) คุณจะเห็นผลลัพธ์ที่ดีขึ้นจากการแยกมันออกเป็นองค์ประกอบอิสระแยกจากกันมากกว่าที่คุณจะใช้ในการแก้ไขปัญหาด้วยการควบคุมแหล่งที่มา
คุณสามารถเพิกเฉยต่อคำแนะนำนี้ได้หากคุณต้องการและหลาย ๆ ทีมทำ แต่หนึ่งในเหตุผลที่รูปแบบการแยกสาขาที่ได้รับความนิยมและประสบความสำเร็จก็คือมันถูกออกแบบมาเพื่อทำงานร่วมกับการรวมกลุ่มอย่างต่อเนื่อง