Git เวิร์กโฟลว์สำหรับทีมขนาดเล็ก


11

ฉันกำลังทำงานกับเวิร์กโฟลว์ git เพื่อนำไปใช้ในทีมเล็ก ๆ แนวคิดหลักในเวิร์กโฟลว์:

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

บทความอธิบายขั้นตอนต่าง ๆ ในวงจรนี้โดยละเอียด:

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md

สิ่งนี้เหมาะสมหรือฉันขาดอะไรไป?

คำตอบ:


16

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

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


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

7

ฉันคิดว่าคุณขาดหัวข้อ Integration Integration อย่างต่อเนื่อง ควรเป็นส่วนหนึ่งของการตั้งค่าการพัฒนาทุกครั้ง

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

หากฟีเจอร์ที่แยกย่อยสั้น ๆ นี่อาจเป็นที่ยอมรับ แต่ก็เป็นสิ่งที่เราควรพิจารณา

ทางเลือกอื่นคือการตั้งค่า CI build สำหรับแต่ละฟีเจอร์สาขา แน่ใจว่านี้จะช่วย แต่มันไม่ได้รวม สิ่งนี้จะชัดเจนเมื่อคุณพบบั๊กแรกที่ไม่ปรากฏในฟีเจอร์ A หรือฟีเจอร์ B แต่ในช่วงเวลาที่คุณรวมฟีเจอร์ A&B

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


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

1
แน่นอน แต่อย่างที่กล่าวมานี้ไม่ใช่การบูรณาการอย่างต่อเนื่อง แต่เมื่อสิ้นสุดการรวมคุณลักษณะที่อาจจะดี enoug แต่ไม่เหมือนกัน
Jens Schauder

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

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

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

1

คุณจะได้รับแรงบันดาลใจให้gitflowหรือTwgit

gitflow สรุปแนวทางเป็น:

ส่วนขยาย Git เพื่อให้การดำเนินการพื้นที่เก็บข้อมูลระดับสูงสำหรับรูปแบบการแตกสาขาของ Vincent Driessen

Twgit อธิบายตัวเองดังต่อไปนี้:

Twgit เป็นเครื่องมือช่วยเหลือฟรีและโอเพนซอร์ซสำหรับการจัดการคุณสมบัติการแก้ไขด่วนและการเปิดตัวในที่เก็บ Git มันมีคำสั่งที่ง่ายและระดับสูงเพื่อนำมาใช้ในรูปแบบการแยกสาขาที่อธิบายไว้ในเอกสารของเรา ระบบปฏิบัติการที่รองรับ: Debian / Ubuntu Linux, Mac OS X

เครื่องมือทั้งสองมีอยู่จากGitHub

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