ตรวจสอบโค้ดด้วย git-flow และ gitub


43

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


คุณอาจมองว่าgerritแม้ว่าฉันจะไม่แน่ใจว่ามันทำงานร่วมกับ git-flow ได้ดีเพียงใด อย่างไรก็ตามทีมของคุณทำงานอะไร
OnesimusUnbound

คำตอบ:


29

เราเพิ่งพบปัญหาที่แน่นอนนี้เมื่อไม่นานมานี้ เราชอบโฟลว์คอมไพล์เนื่องจากใช้ความหมายระดับดี (ใช้ระดับเดียวกับที่คุณใช้ในการอภิปรายทีม: "ฉันจะเริ่มต้นฟีเจอร์ A" มากกว่า "ฉันจะสร้างสาขาชำระเงิน") ขณะที่ git นั้นเป็นระดับ "การนำไปปฏิบัติ" (ซึ่งก็ดีและมีประโยชน์ด้วยเช่นกัน แต่แตกต่างกัน)

ปัญหาที่เรามีอยู่git feature finishเมื่อรวมสาขาเข้ากับการพัฒนาในขณะที่เราต้องการให้ส่งคำขอการดึงและ (นี่เป็นสิ่งสำคัญ) ที่ผู้ตรวจสอบไม่ได้รวมเป็นผู้มอบหมายเพื่อเน้นความเป็นเจ้าของทีม

ทางออกปัจจุบันของเรา:

  1. บางคนใช้โฟลว์คอมไพล์เพื่อสร้างสาขาฟีเจอร์
  2. เมื่อเสร็จแล้วเขาสร้างคำขอดึง (ใช้ GitHub)
  3. การทบทวนเกิดขึ้นโดยมีข้อผูกพันเพิ่มเติม
  4. คำขอดึงผสานการใช้ GitHub โดยวิจารณ์
  5. ไม่มีการไหลของคุณลักษณะคอมไพล์เสร็จสิ้น (เนื่องจากมีการรวมสาขาแล้ว)

สิ่งนี้สอดคล้องกับแนวปฏิบัติของเราโดยมีข้อเสียคือต้องลบสาขาด้วยตนเอง ขั้นตอนต่อไปของเราอาจจะปรับใช้บางส่วนของการไหลของคอมไพล์ (เนื่องจากเป็นคำสั่งเกี่ยวกับการผูกมัดคอมไพล์ git) เพื่อพิจารณาสิ่งนี้


3
วิธีการเกี่ยวกับการสร้างสาขาที่วางจำหน่าย? เกิดอะไรขึ้นกับแท็ก
E-Riddie

16

กระบวนการที่ทีมงานของฉันใช้งานด้วยมีดังนี้:

  1. สร้างสาขาฟีเจอร์: git flow feature start module_1
  2. รหัสได้รับการปรับปรุงในสาขาฟีเจอร์
  3. เมื่อมีการเปลี่ยนแปลงจะถูกส่งไปยัง GitHub (หรือสิ้นสุดเมื่อต้องการ)
  4. เมื่อคุณสมบัติเสร็จสิ้นคำขอดึงจะเปิดขึ้นใน GitHub เปรียบเทียบdevelopและสาขาคุณลักษณะmodule_1
  5. ทีมตรวจสอบคำขอดึงและแสดงความคิดเห็น
  6. การเปลี่ยนแปลงใด ๆ จากคำขอดึงจะทำกับสาขาคุณสมบัติ
  7. เมื่อการเปลี่ยนแปลงทั้งหมดถูกรวมเข้ากับสาขาคุณลักษณะสาขาคุณลักษณะจะเสร็จสิ้น: git flow feature finish module_1
  8. developสาขาจะถูกผลักไป GitHub (GitHub โดยอัตโนมัติจะทำเครื่องหมายคำขอดึงเป็นปิด / รวมเมื่อเกิดเหตุการณ์นี้)

โดยทั่วไปกระบวนการทั้งหมดนี้ทำโดยผู้เขียนต้นฉบับ แต่ไม่จำเป็นต้องทำ ทุกคนในทีมของเราสามารถเข้ามารับกระบวนการนี้ได้ทุกเมื่อ สิ่งที่พวกเขาต้องทำคือชำระเงินที่สาขาฟีเจอร์และดำเนินการต่อด้วยกระบวนการ ใครที่เคยวิ่งgit flow feature finish module_1จะมีความหรูหราของสาขาคุณลักษณะท้องถิ่นของพวกเขาถูกลบ แต่คนอื่น ๆ git branch -D feature/module_1ที่ตรวจสอบสาขาที่มีต้องทำด้วยตัวเองถ้าพวกเขาต้องการที่จะใช้สิ่งที่ต้องการ

สำหรับโปรแกรมแก้ไขด่วนเราใช้วิธีการที่คล้ายกันและสร้างคำขอการดึงใน GitHub ก่อนที่เราจะเสร็จสิ้นการแก้ไขด่วน


ขอบคุณสำหรับคำตอบนี้ ฉันไม่ทราบว่าคอมไพล์จะทำเครื่องหมายการประชาสัมพันธ์ปิดหลังจากการรวม
vicTROLLA

3

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

เมื่อคุณใช้Gerrit Gerrit จะกลายเป็นพื้นที่เก็บข้อมูลส่วนกลาง (มี SSH และเซิร์ฟเวอร์ HTTP ในตัวที่ให้ผู้ใช้โต้ตอบกับมันในแบบเดียวกับที่พวกเขามีอยู่แล้ว) เมื่อใช้ Gerrit เวิร์กโฟลว์จะกลายเป็น:

  1. นักพัฒนาทำการเปลี่ยนแปลงในสิ่งที่สาขากระทำในท้องถิ่น
  2. นักพัฒนาผลักดันการเปลี่ยนแปลงเหล่านั้นไปที่ Gerrit
  3. Gerrit สร้างรายการตรวจสอบเพื่อให้ผู้อื่นตรวจสอบ
  4. เพื่อนตรวจสอบรหัสการแสดงความคิดเห็นและยอมรับหรือปฏิเสธการกระทำ
  5. เมื่อกระทำการเป็นที่ยอมรับแล้ว Gerrit ทำให้ผู้ใช้ได้มีการเปลี่ยนแปลงสำหรับคนอื่น ๆ ที่จะดึงจากสาขา

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

วิธีนี้ใช้ได้ดีกับ git-flow (หรือรูปแบบการแตกแขนงอื่น ๆ ) เพราะ Gerrit รองรับการตรวจสอบการเปลี่ยนแปลงที่เกิดขึ้นในสาขาใด ๆ


3

นี่คือคำแนะนำอื่น

  1. ทำกระบวนการโฟลว์ git ปกติเพื่อสร้างฟีเจอร์แต่อย่าทำเสร็จหรือรวมมันเข้าด้วยกัน
  2. สร้างคำขอดึงแต่อย่ารวมเข้าด้วยกัน รอให้ผู้อนุมัติแสดงความคิดเห็น ความคิดเห็นเป็นเครื่องหมายของการอนุมัติ
  3. ทำเสร็จสิ้นการไหลของคอมไพล์ (ผู้อนุมัติหรือผู้พัฒนาสามารถทำสิ่งนี้ขึ้นอยู่กับสิ่งที่ทีมเห็นด้วย) คำขอดึงจะถูกทำเครื่องหมายว่าถูกรวมเข้ากับ GitHub คุณยังต้องลบสาขาที่จุดเริ่มต้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.