กลยุทธ์การเช็คอินที่ควบคุมแหล่งที่ดีสำหรับงานใหญ่คืออะไร


9

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

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

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


คุณคุ้นเคยกับระบบควบคุมแหล่งใด

@Thorbjorn: Svn, Perforce และ Team Foundation Server พวกเขาทุกคนมีทั้งข้อดีและข้อเสีย
Dominique McDonnell

คำตอบ:


13

ฉันใช้คอมไพล์ดังนั้นคำตอบของฉันคือ "สาขา" สาขาและกระทำชิ้นส่วนอาหารในขณะที่คุณกรอกบิตต่างๆ

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

เมื่อทุกคนมีความสุขกับรหัสผสานและคุณทำเสร็จแล้ว!

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


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

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

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

1
@Dominic โดยทั่วไปใช่ แต่ฉันใช้ "ขนาดไม่สำคัญ" เพื่อหมายถึง "อะไรมากกว่าบรรทัดเดียวที่เพียร์สามารถดูได้ทันทีถูกหรือผิด"
Frank Shearar

3

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

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

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


2

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

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

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


0

เช่นเดียวกับความคิดเห็นปกติจากคนเซิร์ฟเวอร์ SQL "มันขึ้นอยู่กับ"

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

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

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