บริษัท ของฉันรวมสาขาผิดหรือเปล่า?


28

ฉันเพิ่งมาข้ามบทความ MSDN เกี่ยวกับการแยกทางและการผสานและ SCM: การแตกแขนงและผสานรองพื้น - คริส Birmele

ในบทความพวกเขาบอกว่า 'บิ๊กแบงผสาน' เป็นปฏิปักษ์ต่อการรวม:

Big Bang Merge - ชะลอการรวมสาขาเพื่อสิ้นสุดความพยายามในการพัฒนาและพยายามรวมสาขาทั้งหมดพร้อมกัน

ฉันรู้ว่านี่คล้ายกับสิ่งที่ บริษัท ของฉันทำกับสาขาการพัฒนาทั้งหมดที่ผลิต

ฉันทำงานที่ บริษัท ขนาดเล็กมากโดยมีคนคนหนึ่งทำหน้าที่เป็นผู้ตรวจสอบขั้นสุดท้าย + มีอำนาจในการรวมลำตัว เรามีนักพัฒนา 5 คน (รวมถึงฉันด้วย) เราแต่ละคนจะได้รับมอบหมายภารกิจ / ข้อบกพร่อง / โครงการแยกจากกันและเราจะแยกแต่ละสาขาออกจากเส้นทางปัจจุบัน (การโค่นล้ม) จากนั้นทำการพัฒนาในสาขาของเราทดสอบผลลัพธ์เขียนเอกสาร หากจำเป็นให้ดำเนินการตรวจสอบแบบเพียร์และข้อเสนอแนะกับนักพัฒนาอื่น ๆ แล้วส่งสาขาสำหรับความคิดเห็น + ผสานในซอฟต์แวร์การจัดการโครงการของเรา

เจ้านายของฉันซึ่งเป็นผู้มีอำนาจ แต่เพียงผู้เดียวในที่เก็บ trunk จะทำการตรวจสอบความคิดเห็นทั้งหมดของสาขาจนกว่าจะถึงจุดเดียวในเวลาที่เขาจะแสดงความคิดเห็นให้มากที่สุดเท่าที่จะทำได้บางสาขาจะถูกโยนทิ้งเพื่อปรับปรุง / แก้ไข กิ่งไม้จะถูกรวมเข้ากับลำต้นบางสาขาจะถูกโยนกลับเนื่องจากความขัดแย้ง ฯลฯ

ไม่ใช่เรื่องแปลกที่เราจะมีสาขาที่ใช้งานอยู่ 10-20 แห่งที่อยู่ในคิวการตรวจสอบขั้นสุดท้ายเพื่อรวมเข้ากับลำตัว

นอกจากนี้เรายังต้องแก้ไขข้อขัดแย้งในการตรวจสอบขั้นสุดท้ายและขั้นตอนการผสานบ่อยครั้งเนื่องจากมีสองสาขาที่สร้างขึ้นจากลำตัวเดียวกัน แต่แก้ไขรหัสชิ้นเดียวกัน โดยปกติแล้วเราจะหลีกเลี่ยงปัญหานี้โดยเพียงแค่ทำการปิดท้ายใหม่อีกครั้งและใช้การเปลี่ยนแปลงของเราอีกครั้งและแก้ไขข้อขัดแย้งจากนั้นส่งสาขาใหม่เพื่อตรวจสอบ

บางคำถามโดยตรงฉัน:

  • พวกเราแสดงรูปแบบการต่อต้านที่ถูกอธิบายว่าเป็น 'บิ๊กแบงผสาน' หรือไม่?
  • ปัญหาบางอย่างที่เราเห็นเป็นผลมาจากกระบวนการผสานนี้หรือไม่
  • เราจะปรับปรุงกระบวนการผสานนี้โดยไม่เพิ่มคอขวดในเจ้านายของฉันได้อย่างไร

แก้ไข: ฉันสงสัยว่าเจ้านายของฉันจะคลายกริปบนที่เก็บลำต้นหรืออนุญาตให้ผู้พัฒนารายอื่นรวมเข้าด้วยกัน ไม่แน่ใจว่าเหตุผลของเขาคืออะไร แต่ฉันไม่ได้วางแผนที่จะนำหัวข้อขึ้นมาเพราะมันถูกนำขึ้นก่อนและยิงค่อนข้างเร็ว ฉันคิดว่าพวกเขาไม่เชื่อใจเราซึ่งไม่สมเหตุสมผลเพราะทุกอย่างถูกติดตามอยู่แล้ว

ข้อมูลเชิงลึกอื่น ๆ เกี่ยวกับสถานการณ์นี้จะได้รับการชื่นชม


2
ทำไมการควบรวมกิจการรอการตัดบัญชี โดยปกติมีเหตุผลที่จะไม่ทำทันที เป็นคนเดียวที่ทำงานหนักเกินไปและค้างเพิ่งจะใหญ่? มีเหตุผลอื่นอีกไหมทำไมการผสานไม่เสร็จทันเวลา?
Polygnome

1
ฉันอยู่ในตำแหน่งที่ใกล้เคียงกับคุณหลายต่อหลายครั้ง ฉันสามารถบอกได้จากประสบการณ์ส่วนตัวที่หลาย ๆ บริษัท ควบคุมเวอร์ชันโดยเฉพาะอย่างยิ่งการแตกแขนงผิดอย่างน่ากลัว
MechMK1

3
เกิดอะไรขึ้นเมื่อเจ้านายไปเที่ยวพักผ่อน?
Liath

คุณจะกำหนดกลยุทธ์การแยก / รวมเคอร์เนลของลินุกซ์อย่างไร?
Braiam

การเปลี่ยนแปลงที่ถูกโยนกลับเนื่องจากความขัดแย้ง แต่ไม่ใช่ข้อบกพร่องอื่น ๆ ที่จำเป็นต้องผ่านกระบวนการอนุมัติอีกครั้งเมื่อความขัดแย้งได้รับการแก้ไขหรือพวกเขาพิจารณาว่า "อนุมัติชั่วคราว" หรือไม่?
Gregory Nisbet

คำตอบ:


60

ข้อเสนอแนะบางส่วน:

  • ไม่มีอะไรผิดปกติในการมีฟีเจอร์หรือสาขาการแก้ไขข้อบกพร่องมากมายตราบใดที่การเปลี่ยนแปลงที่ทำในแต่ละสาขามีขนาดเล็กพอที่คุณจะสามารถจัดการกับความขัดแย้งที่เกิดขึ้นได้อย่างมีประสิทธิภาพ นั่นควรเป็นเกณฑ์ของคุณหากวิธีการทำงานของคุณนั้นใช้ได้บทความไม่ใช่ MSDN

  • เมื่อใดก็ตามที่สาขาถูกรวมเข้ากับลำตัวลำต้นควรรวมเข้ากับสาขาพัฒนาที่เปิดอยู่ทั้งหมดโดยเร็ว สิ่งนี้จะช่วยให้ทุกคนในทีมสามารถแก้ไขข้อขัดแย้งผสานในสาขาของตนเองและรับภาระจากผู้รักษาประตูของลำตัว

  • วิธีนี้จะทำงานได้ดีขึ้นถ้าผู้รักษาประตูไม่รอจนกว่า 10 สาขาจะ "พร้อมสำหรับการรวมเข้ากับลำต้น" - การแก้ไขข้อขัดแย้งการผสานจากการรวมตัวของลำตัวสุดท้ายมักต้องการเวลาสำหรับทีมดังนั้นจึงควรทำงานในช่วงเวลา interwoven - การรวมหนึ่งครั้งโดยผู้รักษาประตู, การรวมกันอีกครั้งของทีม, การรวมครั้งต่อไปโดยผู้รักษาความปลอดภัย, การรวมกันอีกครั้งโดยทีมและอื่น ๆ

  • เพื่อแยกสาขาให้เล็กมันอาจช่วยแยกฟีเจอร์ที่ใหญ่กว่าให้เป็นงานเล็ก ๆ หลาย ๆ งานและพัฒนาแต่ละงานเหล่านั้นในสาขาของมันเอง หากคุณลักษณะนั้นยังไม่พร้อมใช้งานจนกว่างานย่อยทั้งหมดจะถูกนำไปใช้งานให้ซ่อนจากการผลิตหลังการสลับคุณลักษณะจนกว่างานย่อยทั้งหมดจะเสร็จสมบูรณ์

  • ไม่ช้าก็เร็วคุณจะพบกับการ refactoring งานที่ส่งผลกระทบต่อไฟล์จำนวนมากในฐานรหัส - เหล่านี้มีความเสี่ยงสูงที่ทำให้เกิดความขัดแย้งผสานจำนวนมากกับสาขาต่างๆ สิ่งเหล่านั้นสามารถจัดการได้ดีที่สุดโดยการสื่อสารพวกเขาอย่างชัดเจนในทีมและตรวจสอบให้แน่ใจว่าได้จัดการพวกเขาตรงตามที่ฉันเขียนไว้ข้างต้น: โดยการรวมพวกเขาเข้ากับทุกสาขา dev ก่อน reintegration และแยกพวกมันออกเป็นย่อยย่อย

  • สำหรับขนาดทีมปัจจุบันของคุณการมีผู้รักษาประตูคนเดียวอาจยังคงใช้ได้ แต่ถ้าทีมของคุณมีขนาดโตขึ้นก็ไม่มีทางที่จะมีผู้รักษาประตูคนที่สอง (หรือมากกว่า) หมายเหตุฉันไม่แนะนำให้ทุกคนรวมตัวกัน แต่ไม่ได้หมายความว่าเฉพาะเจ้านายของคุณเท่านั้นที่สามารถทำสิ่งนี้ได้ อาจมีนักพัฒนาอาวุโสหนึ่งหรือสองคนที่สามารถสมัครเพื่อทำหน้าที่ผู้รักษาประตูได้เช่นกัน และถึงขนาดสำหรับขนาดทีมปัจจุบันของคุณ แต่ผู้รักษาประตูคนที่สองสามารถช่วยให้ทีมของคุณสามารถรวมเข้ากับลำตัวได้บ่อยขึ้นและเร็วกว่าเดิมหรือเมื่อเจ้านายของคุณไม่ว่าง


2
ฉันคิดว่าคุณมีความคิดเห็นที่ดีที่สุดที่นี่ยอมรับว่าเราไม่สามารถเปิดลำตัวให้กับทุกคนได้และการแตกสาขาของเราไม่ได้เป็นปัญหาเสมอไป (เฉพาะเมื่อเกิดข้อขัดแย้ง) ฉันคิดว่าคุณทำได้ดีมากชี้ให้เห็นว่าเราสามารถลดความขัดแย้งได้อย่างไรและทำให้แน่ใจว่าวงจรการผสานราบรื่นเรายังคิดว่าคุณถูกต้องสมบูรณ์เมื่อคุณบอกว่าเราอาจต้องการผู้รักษาประตูคนอื่น ขอบคุณมากสำหรับข้อมูลเชิงลึกนี้!
user6567423

@ user6567423 สิ่งอื่นที่คุณอาจต้องพิจารณาคือการสร้างสาขาสำหรับแต่ละเวอร์ชันการพัฒนา (เช่น 5.2.3 หรืออะไรก็ตาม) ที่ผู้พัฒนาแต่ละคนสามารถแยกสาขาออกสำหรับการทำงานของคุณสมบัติแล้วผสานเข้ากับและจากนั้นสามารถผสานกลับเข้าสู่หลัก ปล่อยสาขาโดยหัวหน้าเมื่อการพัฒนาเสร็จสมบูรณ์
nick012000

@ nick012000: ข้อเสนอแนะนั้นจะไม่ทำให้ยากขึ้นสำหรับผู้รักษาประตูที่จะยอมรับหรือปฏิเสธสาขาฟีเจอร์แยกกันสำหรับ / กับการรวมเข้ากับลำตัว? ฉันหมายถึงถ้าคุณสมบัติหลายอย่างรวมกันเป็นหนึ่งในสาขาการพัฒนาการรวมการเปลี่ยนแปลงเหล่านั้นกลับเข้าไปในลำตัวส่วนหนึ่งจะกลายเป็นเรื่องยากจริงๆ หรือฉันกำลังพลาดอะไรอยู่?
Doc Brown

10
" แก้ไขข้อขัดแย้งผสานในสาขาของตนเองและรับภาระบางอย่างจากผู้รักษาประตูของลำตัว " - ฉันรู้สึกว่าส่วนนี้ลดลงอย่างไม่เป็นธรรมเป็นข้อความด้านข้าง "มันจะดีกว่าสำหรับ บริษัท แต่ก็ง่ายกว่าสำหรับคุณ " ดูเหมือนจะเป็นจุดขายหลักเมื่อแนะนำสิ่งนี้กับเจ้านาย นั่นจะไปในทิศทางของการเมืองในสำนักงานที่ SE ไม่ได้เกี่ยวข้อง - แต่ในสถานการณ์นี้โดยไม่ต้องซื้อจากเจ้านายทุกอย่างในคำตอบทางเทคนิคที่ยอดเยี่ยมนี้จะไม่เกิดขึ้น
R. Schmitz

@DocBrown ใช่แล้วมันจะ แต่ก็หมายความว่าคุณจะมีความขัดแย้งน้อยลงระหว่างสาขา dev และมันยังคงให้ระดับความปลอดภัยที่คุณได้รับจากการไม่รวมเข้ากับสาขาหลักโดยตรงและเขาสามารถทำได้ง่ายๆ ปฏิเสธที่จะยอมรับการทำงานเป็นเสร็จและทำการผสานจนกว่าเขาจะมีความสุขกับสถานะของรหัสโดยรวม
nick012000

18

พวกเราแสดงรูปแบบการต่อต้านที่ถูกอธิบายว่าเป็น 'บิ๊กแบงผสาน' หรือไม่?

ฟังดูเหมือนมัน

ปัญหาบางอย่างที่เราเห็นเป็นผลมาจากกระบวนการผสานนี้หรือไม่

อย่างแน่นอน

เราจะปรับปรุงกระบวนการผสานนี้โดยไม่เพิ่มคอขวดในเจ้านายของฉันได้อย่างไร

ที่ บริษัท ของฉัน dev ทุกคนมีความสามารถในการผสาน เรากำหนดคำขอผสานให้กับผู้พัฒนารายอื่นผ่านขั้นตอนการตรวจสอบ / ตอบกลับ / อัปเดตจนกว่าทั้งสองฝ่ายจะพอใจ จากนั้นผู้ตรวจทานจะรวมรหัส

10-20 สาขาที่รอการผสานเป็นสัญญาณว่ากระบวนการของคุณมีข้อบกพร่อง หากเรามีจำนวนมากงาน dev ทั้งหมดจะหยุดจนกว่าจะหมดลง


1
ไม่ใช่คำตอบที่ฉันกำลังค้นหาเพราะฉันสงสัยว่าเจ้านายของฉันกำลังจะคลายการยึดของเขาบนที่เก็บลำต้น แต่คำตอบที่เป็นประโยชน์อย่างไม่น่าเชื่อไม่น้อยขอบคุณสำหรับความเข้าใจ!
user6567423

5
@ user6567423: หากเจ้านายของคุณกลายเป็นคอขวดซึ่งตอนนี้เขาเป็นไปตามคำอธิบายของคุณเขาจะต้องเปลี่ยนวิธีการของเขาหรือยอมรับว่าเขาเป็นต้นเหตุของความล่าช้า (ซึ่งพนักงานของเขาไม่สามารถถูกตำหนิได้) การปฏิเสธที่จะเปลี่ยนวิธีการของคุณไม่สนใจปัญหาที่คุณสร้างและผลักดันความผิดไปสู่คนอื่นไม่ใช่วิธีการทำธุรกิจ
Flater

1
เขาเห็นด้วยว่าเขาเป็นคอขวดและแน่นอนที่สุดเขาไม่ตำหนิผู้อื่นเพราะมัน แต่ใช่ฉันกำลังมองหาเคล็ดลับใด ๆ ที่อาจไม่ชัดเจนว่าอาจลดคอขวดของเรา ขอบคุณสำหรับข้อมูลเชิงลึก
user6567423

1
@ user6567423 ฉันอยากรู้ว่าเขาเคยอธิบายไหมว่าทำไมเขาถึงเป็นคนเดียวที่สามารถรวมตัวกันได้
Matthew

13

นี่เป็นหลักว่าโครงการโอเพนซอร์สจำนวนมากทำงานอย่างไรรวมถึงเคอร์เนล Linux ที่สะดุดตาที่สุดซึ่งมีสาขาจำนวนมากในการบินมากกว่าที่คุณทำในเวลาใดก็ตาม วิธีทั่วไปในการหลีกเลี่ยงการรวมกันของบิ๊กแบงในโครงการเหล่านี้คือการสร้างสาขาอื่น (หรือหลายสาขา) สำหรับการรวมอย่างต่อเนื่อง นี่เป็นสาขาที่คุณใช้เพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณจะทำงานร่วมกับเพื่อนร่วมงานของคุณและจะได้รับการ rebased เป็นระยะ ๆ เมื่อผู้ดูแลประตูได้ทำการตรวจสอบ

หรือคุณสามารถใช้สาขานี้เพื่อรวมคำขอดึงของคุณหลายคำขอเข้าด้วยกันเป็นคำขอใหญ่ครั้งเดียวเพื่อให้หัวหน้าของคุณตรวจสอบ โดยทั่วไปแล้ว Linus Torvalds จะได้รับคำขอดึงที่รวมสองระดับขึ้นไปและมีขนาดตามลำดับเช่นไดรฟ์เวอร์ระบบไฟล์ใหม่ที่สมบูรณ์


ขอบคุณฉันคิดว่าเคล็ดลับในการรวมสาขาและการป้องกันความขัดแย้งอาจเป็นแนวทางที่ดีที่สุดของเรา
user6567423

8

ฉันเห็นด้วยกับ Doc Brown ทั้งคู่ แต่ฉันก็เห็นอีกฝ่าย:

เจ้านายของฉันซึ่งเป็นผู้มีอำนาจ แต่เพียงผู้เดียวในที่เก็บ trunkจะทำการตรวจสอบความคิดเห็นทั้งหมดของสาขาจนกว่าจะถึงจุดเดียวในเวลาที่เขาจะแสดงความคิดเห็นให้มากที่สุดเท่าที่จะทำได้สาขาบางแห่งจะถูกโยนทิ้งเพื่อปรับปรุง / แก้ไข กิ่งไม้จะถูกรวมเข้ากับลำต้นบางสาขาจะถูกโยนกลับเนื่องจากความขัดแย้งฯลฯ

ในความต่ำต้อยของฉันมีกลุ่มต่อต้านการบริหารจัดการ:

  1. เขา / เธอเป็นจุดที่ทำให้หายใจไม่ออก จำกัด ความเร็วของทีม ปัจจัยบัสของคุณคือ 1 ทฤษฎีข้อ จำกัดบอกว่าคุณควรใช้ความพยายามในการปรับปรุงส่วนที่ช้าที่สุดของโซ่
  2. ผู้จัดการของคุณกำลังทำให้วงจรความคิดเห็นของคุณช้าลงและลดความว่องไวของทีมของคุณ คุณสามารถปล่อยทุกสัปดาห์ได้หรือไม่
  3. การรวมความซับซ้อนเพิ่มขึ้นแบบทวีคูณด้วยจำนวนของรหัส เป็นการดีกว่าที่จะทำการรวม 10 เส้นกับ 100 บรรทัดกว่า 1 จาก 1,000 บรรทัด นั่นเป็นเพียงหนึ่งในเหตุผลที่คุณควรทำโดยเร็วที่สุด
  4. หากคุณตรวจพบความล้มเหลวในลำต้นคุณจะทำมันในเวลา สาขาไหนเป็นสาขาที่มีปัญหา
  5. การตัดสินใจควรทำโดยผู้ที่มีความรู้เกี่ยวกับพวกเขามากขึ้น ใครจะรู้เพิ่มเติมในกรณีนี้ ฉันเดิมพันว่านักพัฒนาที่ทำรหัส
  6. คุณไม่สามารถแก้ไขข้อผิดพลาดในการผลิตได้หากผู้จัดการของคุณเป็นแบบโฮลิดเดย์
  7. คุณกำลังทำงานซ้ำและทิ้งสาขา นี่เป็นการเสียเวลา เวลาที่ใช้ในการรอคอยเพื่อไปถึงการผลิตก็เป็นของเสีย

recomendations:

  • ผู้จัดการของคุณต้องมอบหมายความรับผิดชอบให้กับทีม คุณต้องแสดงให้เห็นว่าทีมนั้นมีความเป็นมืออาชีพ ทำให้ชัดเจนว่าพวกเขาสามารถไว้วางใจในทีมได้
  • ใช้วิธีการตรวจสอบบางอย่าง อาจเป็นเพราะคุณต้องการคะแนนเฉลี่ยของสมาชิกในทีมอีกสองคน
  • อาจจะใช้ SVN ทำให้มันยากขึ้น ลอง Git และดูว่ามันช่วยคุณได้ไหม มากไปกว่านั้น. หากคุณใช้ GitHub คุณสามารถใช้กลไกคำขอดึงเพื่อให้การผสานต้องใช้การลงคะแนนแน่นอน
  • อ่านและแบ่งปันข้อมูลเกี่ยวกับการปฏิบัติที่คล่องตัวรวมอย่างต่อเนื่องและ DevOps

7
ฉันทำงานอย่างมืออาชีพกับทั้ง SVN และ git และฉันบอกว่า SVN นั้นเป็นส่วนหนึ่งของปัญหา: มันบังคับใช้นโยบายการผสานการย้อนกลับเดียวในสาขาที่ไม่มีอยู่ในคอมไพล์ ในคอมไพล์การรวมทั้งหมดมีค่าเท่ากันใน SVN บางอันมีค่ามากกว่ากัน นอกจากนี้การขาดความมุ่งมั่นในท้องถิ่นทำให้การทดสอบ SVN ทำได้ยากกว่าการใช้คอมไพล์และการขาดพื้นที่จัดเตรียมจะเพิ่มความยืดหยุ่นของ SVN เท่านั้น มีเหตุผลทำไม Torvalds ไม่เพียง แต่ใช้ SVN แทนการพัฒนาคอมไพล์ ...
cmaster

Git นั้นดีกว่า svn ในความคิดของฉันด้วยเหตุผล @cmaster ที่ออกมาและอื่น ๆ อีกมากมาย
reggaeguitar

ฉันเห็นด้วยกับคอมไพล์อาจจะแก้ปัญหาการรวมของเราบางอย่างและพระเจ้าที่รักฉันจะรักที่จะมีการลดราคา แต่ฉันไม่คิดว่าเราจะทำการสลับเมื่อเร็ว ๆ นี้ :(
user6567423

1
@ user6567423 ฉันได้ปรึกษาเมื่อปีที่แล้วซึ่งฉันได้ช่วยทีมเล็ก ๆ เปลี่ยนจาก svn เป็น Git และเปลี่ยนเวิร์กโฟลว์ของพวกเขารวมถึงการฝึกอบรมเกี่ยวกับ Git และตั้งค่าด้วย GitLab community edition (ซึ่งเป็นโอเพ่นซอร์ส) สำหรับการตรวจสอบโค้ดและการทำงานร่วมกัน . พวกเขากระตือรือร้นเกี่ยวกับเรื่องนี้มาก มันเป็นความแตกต่างทั้งกลางวันและกลางคืน (ใช้เวลาเพียงสามวันเท่านั้น)
Wildcard

2

เมื่อคุณทำงานคุณลักษณะในสาขาแยกคุณจะไม่สามารถทำการทดสอบการรวมกันได้อย่างง่ายดายจนกว่าสาขาใดสาขาหนึ่งจะถูกรวมเข้ากับลำตัวและดึงเข้าไปในสาขาคุณลักษณะอื่น ๆ จากประสบการณ์ของฉันนี่เป็นปัญหาหลักของรูปแบบการต่อต้านของ Big Bang Merge เป็นการดีที่คุณจะทำงานคุณสมบัติทดสอบในสาขาคุณสมบัติรวมไว้ในลำต้นและ ณ จุดที่คุณทำกับคุณสมบัติ หากยังไม่ได้รับการรวมคุณต้องกลับมาดูอีกครั้งทุกครั้งที่มีสิ่งอื่นเข้ามารวมอยู่ในลำตัวก่อนหน้า ความเจ็บปวดของรูปแบบการต่อต้านนี้คือคุณมีบั๊กประเภทการรวมจำนวนมากปรากฏขึ้นเมื่อสิ้นสุดรอบการพัฒนา


1

ดังนั้นคุณมี 20 สาขา สาขา 1 ถูกรวมเข้าด้วยกัน จากนั้นผู้พัฒนาของสาขา 2 จะต้องรวมสาขา 1 เข้ากับสาขาของตนเพื่อให้สามารถผสานเข้ากับหลักโดยไม่มีข้อขัดแย้งจากนั้นผสาน จากนั้นผู้พัฒนาของสาขา 3 จะต้องรวมสาขา 1 และสาขา 2 เข้ากับสาขาของตนเพื่อให้สามารถผสานเข้ากับหลักโดยไม่มีข้อขัดแย้งจากนั้นผสาน

การออกกำลังกายสำหรับผู้อ่าน: เขียนโปรแกรมที่พิมพ์โพสต์ที่สมบูรณ์ของฉัน :-)

นี่คือความบ้า. คุณจะใช้เวลารวมกันอย่างไม่น่าเชื่อ


ไม่จำเป็นเว้นแต่สาขาจะมีข้อขัดแย้งจากนั้นเขาก็สามารถรวมพวกมันทั้งหมดเข้ากับลำต้นได้อย่างราบรื่น โดยปกติเราจะพยายามป้องกันไม่ให้เกิดข้อขัดแย้งโดยทำการทดสอบก่อนที่เราจะส่งสาขาเพื่อตรวจสอบ แต่ความขัดแย้งเกิดขึ้นอย่างหลีกเลี่ยงไม่เมื่อจำนวนสาขาในคิวเพิ่มขึ้น ฉันยอมรับว่ามันฟังดูเหมือนบ้าคลั่ง
user6567423

2
พฤติกรรมการรวม SVN ปกติเท่าที่ฉันสามารถบอกได้ ...
cmaster

0

เมื่อพิจารณาถึงวิธีการทำงานของคุณและเจ้านายของคุณเป็นคนที่คลั่งไคล้การควบคุมอย่างรับผิดชอบการแตกแขนงเองก็ดูเหมือนจะเป็นปัญหา แทนที่จะสร้างสาขาสำหรับทุกฟีเจอร์ให้นักพัฒนาแต่ละคนคอมมิตคุณลักษณะของตนเป็นส่วน ๆ ลงในลำต้นโดยตรง สิ่งนี้ทำให้ภาระของการรวมเข้ากับนักพัฒนาซอฟต์แวร์ในขั้นตอนเล็ก ๆ หลายขั้นตอน (win-win) ผู้รักษาประตูสามารถติดตามการเปลี่ยนแปลงเล็ก ๆ ในช่วงเวลาที่ยาวนานกว่าก่อนหน้านี้ในวงจรการพัฒนาและยังคงเป็นผู้ตรวจสอบหลัก

การแตกแขนงนั้นเป็นสิ่งที่คุณไม่ต้องการทำนอกจากคุณจะมีเหตุผลที่ดีในการทำหรือคุณไม่มีทางเลือกอื่น คุณมีขนาดเล็กพอที่จะทำให้ข้อมูลตรงกันให้แน่นยิ่งขึ้นซึ่งจะง่ายขึ้นและปลอดภัยยิ่งขึ้น


1
และคุณจะจัดการกับการเปิดตัวอย่างไรหากเพียงหนึ่งในคุณสมบัติเหล่านั้นมีข้อบกพร่องหรือยังไม่เสร็จในเวลา? "การแตกแขนงเองเป็นสิ่งที่คุณไม่ต้องการทำนอกจากคุณจะมีเหตุผลที่ดีที่ต้องทำ" - เมื่อคุณมี 5 คนที่ทำงานในหลาย ๆ คุณสมบัติคุณต้องใช้การแยกสาขายกเว้นว่าคุณไม่มีเหตุผลที่ดีมาก
Ivo van der Veeken

มันเกี่ยวกับสองสิ่ง: เจ้านายต้องการที่จะยังคงเป็นผู้ดูแลประตูเพียงคนเดียวและทุกสิ่งไม่ควรแยกออกจากกันมากเกินไป ใช่มีบางช่วงเวลาที่บางสิ่งถูกผลักดันซึ่งยังไม่ได้รับการตรวจสอบโดยหัวหน้า เขาควรจะสามารถทำสิ่งนั้นได้อย่างรวดเร็วแม้ว่าและในกรณีที่ไม่น่าเป็นไปได้ที่เขาต้องการที่จะส่งมอบทันทีเขาสามารถย้อนกลับการกระทำล่าสุดได้ สิ่งนี้จะทำให้สิ่งต่าง ๆ ตรงกันและหากคุณทำสิ่งใดล้มเหลวคุณจะล้มเหลวอย่างรวดเร็ว ดูเหมือนว่าฉันจะประนีประนอมกับสถานการณ์ที่ดี
Martin Maat

1
ฉันจะพิจารณานี้เป็นที่พึ่งสุดท้าย
reggaeguitar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.