Git เวิร์กโฟลว์สำหรับหลายทีม


12

เราจะเริ่มใช้ Git (ยังไม่ได้ใช้) และฉันต้องการกำหนดเวิร์กโฟลว์

เรามี 4 ทีมในสถานที่ต่าง ๆ 4 แห่งทั่วโลกพัฒนาร่วมกันในผลิตภัณฑ์เดียวกัน แต่ละทีมเป็นเจ้าของส่วนหนึ่งของรหัสผลิตภัณฑ์ แต่บางครั้งพวกเขาก็ต้องทำการเปลี่ยนแปลงรหัสที่ทีมอื่นเป็นเจ้าของด้วย

มีคำแนะนำสำหรับเวิร์กโฟลว์ Git สำหรับสภาพแวดล้อมดังกล่าวหรือไม่?

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

นอกจากนี้บทความนี้นำเสนอวิธีการที่ดี

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


2
เราใช้รูปแบบการแตกแขนงนี้แต่ฉันคิดว่าถ้าคุณอ่าน "ฟีเจอร์การแยก" เป็น "การเล่าเรื่อง" มันให้ความสำคัญกับบทความที่สองของคุณ

2
ฉันแน่ใจว่า 10 คนสามารถตอบกลับสิ่งนี้ได้ด้วยคำตอบ 10 อย่าง นี่คือสิ่งที่ใช้งานได้สำหรับฉัน: เรามี repo หลักหนึ่งโฮสต์บน github ซึ่งหมายถึงการเปิดตัว 'ปัจจุบัน' รุ่นเก่าจะแยกเป็นกลุ่ม (แม้ว่าการติดแท็กจะใช้งานได้เช่นกัน) สมาชิกในทีมได้รับการสนับสนุนให้สร้างสาขาสำหรับงานที่กำลังทำอยู่ เมื่อดำเนินการเสร็จแล้วพวกเขาจะทำการร้องขอการดึงให้กับต้นแบบ (หรือที่ใดก็ตามที่จำเป็นต้องรวมเข้าด้วยกัน) จากนั้นก็มีคนอื่นตรวจสอบคำขอการดึงและมีความเป็นไปได้ที่จะผสานเข้ากับต้นแบบ พวกเขายังรับผิดชอบในการเคลียร์สาขาเมื่อถูกรวมเข้าด้วยกัน

2
คุณอาจสนใจsubmodulesเพื่อแยกรหัสฐานของทีมออกจากกัน จากนั้นพวกเขาสามารถแยกฐานรหัสของกันและกันและส่งชุดข้อมูลแก้ไขเมื่อแก้ไขส่วนของรหัส
Fred Foo

@larsmans & carbonbasednerd - ความคิดเห็นของคุณควรได้รับคำตอบพวกเขาจะได้รับคะแนนมากขึ้นจากฉัน * 8 ')
ทำเครื่องหมายบูธ

คำตอบ:


8

ลองดูที่Successful Git Branching Modelซึ่งมีกลยุทธ์การแยกสาขาที่ดีสำหรับการพัฒนาคุณสมบัติในรุ่นต่างๆ

โมเดลการแยกสาขาของ Git ที่ประสบความสำเร็จ

คุณสามารถใช้สิ่งที่คล้ายกับระดับพิเศษหนึ่งระดับสำหรับสาขาของทีมระหว่างสาขา 'พัฒนา' และ 'สาขาคุณลักษณะ' การมีสาขาของทีมจะช่วยให้ทั้งสองทีมทำงานร่วมกันได้อย่างมีประสิทธิภาพมากขึ้นโดยการรวมระหว่างสาขาของทีม


0

ฉันจะบอกว่าแต่ละทีมมีที่เก็บเวอร์ชันของตัวเองพร้อมที่เก็บส่วนกลางหนึ่งที่ทุกคนมุ่งมั่น (เช่นในเคอร์เนล Linux ที่ที่เก็บ Linus เป็นเคอร์เนลและที่เก็บส่วนกลาง)

จากนั้นสำหรับการรักษารหัสผลิตภัณฑ์คุณสามารถใช้ submodules เช่น @larsmans กล่าวได้จากนั้นแต่ละทีมสามารถทำงานได้เฉพาะในส่วนที่สำคัญที่สุดสำหรับพวกเขาเท่านั้นและหากพวกเขาต้องการทำงานกับส่วนอื่นพวกเขาสามารถทำได้ แต่พวกเขา จะต้องจำไว้ว่าต้องอัปเดต submodule และนี่คือที่ที่ปัญหาอยู่ (เนื่องจากมันง่ายมากที่จะทำสิ่งผิดพลาดเมื่อใช้ git ขอบคุณที่มันง่ายที่จะหนีจากพวกมันด้วย)

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

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