Git: การแก้ไขข้อบกพร่องที่มีผลกระทบต่อสองสาขา


16

ฉันใช้ repo Git ของฉันในแบบจำลอง Git branching ที่ประสบความสำเร็จและสงสัยว่าจะเกิดอะไรขึ้นถ้าคุณมีสถานการณ์นี้:

ป้อนคำอธิบายรูปภาพที่นี่

สมมติว่าฉันกำลังพัฒนาบนฟีเจอร์สองสาขา A และ B และ B ต้องใช้รหัสจาก A. โหนด X แนะนำข้อผิดพลาดในฟีเจอร์ A ซึ่งส่งผลกระทบต่อสาขา B แต่ไม่พบที่โหนด Y ที่ผสานคุณสมบัติ A และ B และ ทำการทดสอบก่อนที่จะแตกแขนงออกไปอีกครั้งและทำงานในการทำซ้ำครั้งถัดไป

เป็นผลให้ข้อผิดพลาดที่พบในโหนด Z โดยคนที่ทำงานเกี่ยวกับคุณสมบัติ B ในขั้นตอนนี้ก็ตัดสินใจว่าจำเป็นต้องมีการแก้ไขข้อบกพร่อง การแก้ไขนี้ควรนำไปใช้กับฟีเจอร์ทั้งสองเนื่องจากผู้ที่ทำงานในฟีเจอร์ A ต้องมีการแก้ไขบั๊กเนื่องจากเป็นส่วนหนึ่งของฟีเจอร์

ควรจะสร้างสาขา bugfix จากคุณสมบัติ A ล่าสุดหรือไม่ (รวมเป็นหนึ่งจากโหนด Y) จากนั้นผสานกับคุณสมบัติ A หลังจากนั้นฟีเจอร์ทั้งสองจะถูกรวมเข้ากับการพัฒนาอีกครั้งและทดสอบก่อนที่จะแตกแขนงออก?

ปัญหานี้คือมันต้องการให้ทั้งสองสาขารวมเพื่อแก้ไขปัญหา เนื่องจากฟีเจอร์ B ไม่ได้เป็นรหัสแบบสัมผัสในฟีเจอร์ A, มีวิธีในการเปลี่ยนประวัติที่โหนด Y โดยการใช้การแก้ไขและยังช่วยให้ฟีเจอร์สาขา B ยังคงไม่ได้ถูกแยกจากกัน แต่มีรหัสคงที่จากฟีเจอร์ A หรือไม่?

มีความเกี่ยวข้องเล็กน้อย: Git bug branch Convention


6
คุณไม่สามารถแก้ไขบั๊กในสาขา 'พัฒนา' แล้วรวมมันเข้ากับฟีเจอร์ A และฟีเจอร์ B ได้หรือไม่?
tdammers

อืมดูเหมือนว่าจะดีที่สุด อาจมีข้อขัดแย้งในฟีเจอร์ A แต่ฉันคิดว่าคงหลีกเลี่ยงไม่ได้ที่นี่
Aram Kocharyan

หากคุณยังไม่ได้ทำการพัฒนาเพิ่มเติมใด ๆ ในสาขา 'การพัฒนา' และข้อผิดพลาดจะไม่ทับซ้อนกับการเปลี่ยนแปลงใด ๆ ในสาขา 'ฟีเจอร์ A' คุณจะไม่ได้รับความขัดแย้งใด ๆ
tdammers

คำตอบ:


24

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


มันใช้งานได้ดีไชโย
Aram Kocharyan

5

มีข้อผิดพลาดใน A หรือ X แก้ไขข้อผิดพลาดในสาขา B ที่มันถูกพบ การแก้ไขจะเผยแพร่ไปยัง X และ A ในช่วงเวลาปกติของเหตุการณ์


ขอบคุณนั่นเป็นไปได้ตราบใดที่ข้อผิดพลาดไม่ส่งผลกระทบต่อคุณสมบัติ A.
Aram Kocharyan

0

แม้ว่าจะไม่ใช่เวิร์กโฟลว์ยอดนิยมgitแต่เวิร์กโฟลว์ที่ได้รับความนิยมใน Mercurial ก็คือการปรับปรุงแก้ไขXแก้ไขข้อผิดพลาดที่นั่น (ดังที่X2 ) จากนั้นทำซ้ำการผสานY(ซึ่งจะเป็นการผสานคู่หนึ่งใน Mercurial)

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

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