เหตุใดจึงต้องใช้คำขอดึงแทนการรวม


16

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


1
คำขอดึงช่วยให้ผู้จัดการโครงการสามารถตัดสินใจได้ว่าพวกเขาต้องการให้สาขารวมเข้ากับต้นแบบหรือไม่
Robert Harvey

ในทางปฏิบัติหากนักพัฒนาซอฟต์แวร์ทุกคนสามารถเข้าถึงมาสเตอร์ได้มันจะสร้างความแตกต่างได้หรือไม่?
Goose

2
@ รีวิวรหัส Goose?
พี่เลี้ยง

4
เราไม่ใช้คำขอดึงที่ร้านของเรา ความเข้าใจเกี่ยวกับคำขอดึงของฉันคือพวกเขาส่วนใหญ่จะใช้กับ Github ซึ่งคุณได้เผยแพร่โครงการโอเพนซอร์ซสาธารณะ ในฐานะผู้จัดการโครงการของโครงการดังกล่าวแทนที่จะปล่อยให้คนทั้งโลกฟรีบังเหียนโครงการของคุณเพื่อทำการเปลี่ยนแปลงตามอำเภอใจ (และอาจเป็นอันตราย) โดยพลการคุณต้องให้คนอื่นส่งการเปลี่ยนแปลงในรูปแบบของคำขอดึงเพื่อให้คุณสามารถตรวจสอบได้ การเปลี่ยนแปลงของพวกเขาก่อนที่คุณจะรวมพวกเขาเข้ากับสาขาหลัก
Robert Harvey

4
เพราะมันเป็นวิธี DVCS ที่ไม่เคยทำในขั้นตอนเดียวสิ่งที่คุณสามารถทำได้ใน 3 หรือ 4 อันซับซ้อน
Mason Wheeler

คำตอบ:


23

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

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

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

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


5

การทำทั้งฟีเจอร์การแยกและ forks + คำขอดึงฉันคิดว่าคำขอดึงมีประโยชน์เล็กน้อยเมื่อคุณทั้งหมดกำลังพัฒนาในทีมหรือ บริษัท เดียวกัน

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

ต้องบอกว่าคุณสามารถดึงคำขอระหว่างสาขาใน repo เดียวกัน คุณไม่ต้องแยกหรือมีสิทธิ์ต่างกัน

นอกจากนี้คุณต้องพิจารณาวิธีการและขั้นตอนการทำงานทั้งหมด คุณมีระบบจองตั๋ว, CI, การทดสอบการยอมรับอัตโนมัติ ฯลฯ หรือไม่? การตรวจสอบรหัสของคุณให้การตรวจสอบเพียงครั้งเดียวที่สำคัญก่อนที่รหัสจะเริ่มทำงานหรือว่าเป็นเพียงแบบฝึกหัดการตรายางซึ่งทำซ้ำซ้อนโดยการตรวจสอบอื่น ๆ ในเวิร์กโฟลว์ของคุณหรือไม่


4

มีข้อสังเกตที่เรียกว่ากฎหมายของ Conway ซึ่งระบุว่า:

องค์กรที่ออกแบบระบบ ... ถูก จำกัด ให้ผลิตงานออกแบบซึ่งเป็นสำเนาของโครงสร้างการสื่อสารขององค์กรเหล่านี้

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

ในทำนองเดียวกันกฎหมายของ Conway แนะนำว่าถ้าคุณต้องการมีสถาปัตยกรรมไมโครเซอร์วิสที่แยกออกจากกันอย่างหมดจดของความรับผิดชอบอิสระและอินเทอร์เฟซที่กำหนดไว้อย่างชัดเจนช่องทางการสื่อสารขององค์กรของคุณควรสะท้อนถึงสถาปัตยกรรมที่คุณต้องการ นั่นหมายความว่าทีมเล็ก ๆ 5-10 คนควรมีสิทธิ์เข้าถึงโดยตรงกับ microservice ใด ๆ ที่กำหนดและทุกคนที่อยู่นอกทีมนั้นควรจะต้องทำตามคำขอดึง สิ่งนี้ทำให้มั่นใจว่าคนที่คุ้นเคยกับบริการไมโครสโคปมากที่สุดคือคนที่ตรวจสอบและให้คำแนะนำเกี่ยวกับเรื่องนี้

เมื่อคุณมีองค์กรขนาดใหญ่ที่ทุกคนสามารถเข้าถึงได้โดยตรงจากทุกที่ช่องทางการสื่อสารของคุณที่มีการต่อต้านน้อยที่สุดจะทำให้คุณสร้างสถาปัตยกรรมโคลนขนาดใหญ่ขึ้นมา

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


1

Karl Bielefeldt พูดถูก ฉันจะเพิ่ม: มันคือทั้งหมดที่เกี่ยวกับคุณภาพ

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

มันคุ้มค่ากับความพยายาม


ขอบคุณสำหรับความคิดเห็นของคุณ. ฉันไม่แน่ใจว่าทำไมจึงใช้สิ่งนี้เป็นคำตอบสำหรับคำถาม
Goose

นี่เป็นคำตอบเดียวที่กล่าวถึง CI ที่รวมไว้ล่วงหน้า
Basilevs

0

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

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