ที่เก็บข้อมูลองค์กร Github ปัญหาผู้พัฒนาหลายรายและการแยก - แนวทางปฏิบัติเวิร์กโฟลว์ที่ดีที่สุด


14

ชื่อแปลก ๆ ใช่ แต่ฉันมีเหตุผลพอสมควรที่จะครอบคลุมฉันคิด

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

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

ดังนั้นฉันมีคำถามสองสามข้อ:

  1. ในกรณีนี้มีวิธีแยกแบบผู้พัฒนาหรือไม่ ดูเหมือนว่ามันจะเกินกำลังไปหน่อย ฉันไม่แน่ใจว่าเราต้องการทางเลือกสำหรับนักพัฒนาทุกคนเว้นแต่ว่าเราจะแนะนำนักพัฒนาที่ไม่สามารถเข้าถึงการพุชโดยตรงและต้องการรหัสทั้งหมดของพวกเขา ในกรณีนี้เราต้องการกำหนดนโยบายเช่นนั้นสำหรับนักพัฒนาเหล่านั้นเท่านั้น ดังนั้นจะดีกว่ากัน? นักพัฒนาทั้งหมดในที่เก็บเดียวหรือเป็นทางเลือกสำหรับทุกคน?
  2. ใครบ้างมีประสบการณ์กับเครื่องมือฮับโดยเฉพาะคุณสมบัติการดึงคำขอ ถ้าเราทำ fork-per-developer (หรือแม้แต่สำหรับ devs ที่มีสิทธิพิเศษน้อยกว่า) คุณลักษณะการร้องขอแบบดึงของฮับจะทำงานกับคำขอแบบดึงจากที่เก็บต้นแบบต้นน้ำ (ที่เก็บขององค์กรหรือไม่) มีพฤติกรรมที่แตกต่างกันหรือไม่?

แก้ไข
ฉันทำการทดสอบบางอย่างกับปัญหาส้อมและดึงคำขอและพบว่า หากคุณสร้างปัญหาในที่เก็บขององค์กรของคุณให้แยกที่เก็บจากองค์กรของคุณไปยังบัญชี GitHub ของคุณเองทำการเปลี่ยนแปลงบางอย่างรวมกับสาขาหลักของส้อมของคุณ เมื่อคุณพยายามเรียกใช้hub -i <issue #>คุณจะได้รับข้อผิดพลาดUser is not authorized to modify the issue. ดังนั้นกระบวนการทำงานจึงไม่ทำงาน

คำตอบ:


6

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

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

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


2

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

ผู้พัฒนาต้องการนำโค้ดของเขาไปไว้ในสาขาหลักและขอให้รวมไว้ด้วย

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

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


1

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

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

ฉันจะจองสาขาสำหรับสิ่งต่าง ๆ เช่นการอัปเกรดเวอร์ชันการเปลี่ยนหนึ่งในชิ้นส่วนเทคโนโลยีทำงานบน submodule เป็นเวลา 3 เดือนที่มีพื้นฐานเหมือนกันเล็กน้อย

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

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


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

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

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

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