กลยุทธ์การผสานเช่น Git Flow เป็นรูปแบบการต่อต้านจริง ๆ หรือไม่?


30

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

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

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

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

ฉันอยากจะรู้ว่าทำไมรูปแบบการพัฒนาแบบนี้จึงถูกมองว่าเป็นรูปแบบต่อต้าน คือจริงๆมันต่อต้านรูปแบบ?


1
ส่วน "กฎ 3" จากบล็อกโพสต์เก่าของ Ted Dziubaอาจช่วยแสดงให้เห็นว่ามันเป็นรูปแบบการต่อต้านได้อย่างไร
Isxek

5
IMO ยิ่งเวลาที่คุณใช้ความคิดเกี่ยวกับการควบคุมเวอร์ชันยิ่งเกิดขึ้นผิดกับผู้ใช้ทั้งหมด -> ปรากฏการณ์เครื่องมือในครั้งแรก
Erik Reppen

@ErikReppen: ฉันต้องการแยกความคิดของทุกคนออกจากการควบคุมเวอร์ชันและมีกระบวนการที่ทุกคนสามารถคุ้นเคยได้ ด้วยวิธีนี้เราไม่ต้องกังวลกับสิ่งต่าง ๆ เช่นนี้เป็นรูปแบบการต่อต้านหรือไม่
Makoto

6
@Makoto สิ่งใดก็ตามที่ละเมิด KISS คือรูปแบบการต่อต้าน IMO นี่คือที่ผู้ใช้พลังงาน VCS มักจะทำให้ฉันบ้า
Erik Reppen

6
คำว่า "antipattern" นั้นเป็นเหมือน "แนวปฏิบัติที่ดีที่สุด" ซึ่งมักจะเป็นข้ออ้างสำหรับคนที่จะปิดสมองของพวกเขา อย่ายอมรับความคิดนี้หากผู้นำไม่สามารถบอกคุณได้อย่างชัดเจนว่าเขามีประสบการณ์อะไรกับมันและทำไมมันถึงไม่ดี
Kyralessa

คำตอบ:


30

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

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


3
ประสบการณ์ของฉันกับสาขาคุณลักษณะหรือวิธีที่เราทำพวกเขาคืออาจมีความปวดใจกับพวกเขาหากพวกเขาได้รับอนุญาตให้มีชีวิตอยู่ได้มากกว่าการทำซ้ำ กฎที่ระบุว่าคุณสมบัติทั้งหมดจะต้องรวมเข้ากับการทำซ้ำก่อนที่จะปล่อยจะดีเพื่อบรรเทาความโศกเศร้าของการผสาน - และเด็กผู้ชายเรามีความปวดใจอย่างรุนแรงบางอย่างที่อยู่เบื้องหลังเหล่านั้น ...
Makoto

6
ประสบการณ์ของฉันคือคุณสามารถมีสิ่งของท้องถิ่นวางอยู่ได้ตราบใดที่คุณยังคงผสานมันกับเจ้านายที่ผ่านมาและหรือพัฒนาตามความเหมาะสม
Jan Hudec

2
@JaHudec ... หรือจนกว่าคุณจะมีสองสิ่งที่วางอยู่รอบ ๆ ซึ่งขัดแย้งกันไม่ทางใดก็ทางหนึ่ง คุณควรมีภาพรวมเกี่ยวกับสิ่งที่กำลังทำอยู่เสมอ ...
โยฮันเนส

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

3
คุณถูก. พวกเขาเป็นเพียงรูปแบบการต่อต้านเมื่อพวกเขาอยู่นานเกินไปโดยไม่ถูกผสาน บางครั้งผู้คนยังคงต่อต้านแนวคิดเมื่อพวกเขาจำเหตุผลไม่ได้
Karl Bielefeldt

21

การผสานเป็นเรื่องตลก - ยิ่งทำน้อยเท่าไหร่ก็ยิ่งยากมากเท่าไหร่ยิ่งมีคนกลัวมากก็จะยิ่งทำน้อยเท่านั้น

การแก้ปัญหาคือไม่อนุญาตให้สาขาเบี่ยงเบนมากเกินไปหรือไม่ใช้สาขา

หากผู้คนเข้าใจสิ่งนี้คุณอาจจะมีปัญหาไม่มากในการผสานถ้าไม่ - อาจเป็นสาขาที่ไม่ใช่ความคิดที่ดีหากไม่มีการศึกษา


1
Nah ไม่ได้ใช้สาขาเป็นไม่ใช่ผู้เริ่มต้น ประเด็นหลักอื่น ๆ ก็คืองานนั้นสามารถทำได้ในสองที่ที่ต่างกันในรหัสเดียวกันดังนั้นหวังว่าเราจะสามารถทำอะไรบางอย่างเพื่อบรรเทาปัญหานี้ได้เช่นกัน
Makoto

12
@makoto การถอดรหัสสิ่งต่าง ๆ ในรหัสบ่อยครั้งทำให้ความขัดแย้งน้อยลง มันสามารถแยกฟังก์ชันการทำงานแบบธรรมดาออกเป็นฟังก์ชัน / คลาสหรือหลีกเลี่ยงการตั้งสมมติฐานที่ไม่มีเอกสารระหว่างโมดูลในระดับสูง จากนั้นการเปลี่ยนแปลงจะกลายเป็นภาษาท้องถิ่นมากขึ้น
maxim1000

1
@ maxim1000 ฉันเห็นด้วย ฉันคิดว่ามีคนเคยพูดบางอย่างเช่น "VCS เป็นทางเลือกของคนยากจนในการแยกส่วนสถาปัตยกรรม [decoupled]"
8DH

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