คำถามติดแท็ก branching

การแยกในการควบคุมการแก้ไขคือการทำซ้ำของวัตถุภายใต้การควบคุมการแก้ไขเพื่อให้การแก้ไขสามารถเกิดขึ้นในแบบคู่ขนานไปตามกิ่งไม้ทั้งสอง

5
ควรสร้างสาขาการพัฒนาเมื่อใด
เรากำลังย้ายทีมงานโครงการของเราจากการใช้สาขาหลัก / ลำต้นเดียวไปยังสาขาการพัฒนา / การทำงานหลายสาขาที่ควรรวมเป็นหลักอย่างสม่ำเสมอ เรากำลังพิจารณากระบวนการใหม่ของเราในบทความนี้และคู่มือการแบ่งสาขาของ TFS (เรากำลังใช้ TFS และ Visual Studio 2010) ขณะนี้มีระหว่าง 1 ถึง 5 คนที่ทำงานในโครงการในเวลาใดก็ได้ หลักต้องมีความเสถียรตลอดเวลาเพราะเราต้องการให้ตัวเลือกที่จะปล่อยเมื่อใดก็ตามที่เราต้องการ เรายังไม่มี sprints คงที่ - อย่างน้อยยังไม่ได้ - และในขณะนี้ปล่อยทุก 1-2 สัปดาห์ ณ จุดนี้ในเวลาที่แต่ละคนกำลังแก้ไขข้อบกพร่องในใบสมัคร ในอีกไม่กี่สัปดาห์เราจะเริ่มพัฒนาส่วนประกอบใหม่ขนาดใหญ่สำหรับแอพ ผสานจุดหนึ่งที่เรากำลังมองหาคือเมื่อสาขาการพัฒนาควรจะสร้าง เราจะใช้เรื่องราวของผู้ใช้หลายคนพร้อมกันขึ้นอยู่กับชุดทักษะของนักพัฒนา เราคิดเกี่ยวกับการสร้างสาขาสำหรับนักพัฒนาแต่ละคน แต่มันก็ไม่สมเหตุสมผลเพราะจะต้องมีการร่วมมือกันในการทำงาน เราไม่สามารถผ่านสาขาการพัฒนาเดียวเพราะเราต้องการที่จะผสานกับหลักในขณะที่งานอื่นเสร็จสมบูรณ์ ใครบ้างมีคำแนะนำเกี่ยวกับเรื่องนี้?

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

1
อุปสรรคในการใช้ Git Flow ในการโค่นล้ม
ทีมของฉันในที่ทำงานกำลังเริ่มโครงการใหม่โดยใช้การโค่นล้มเป็น VCS ของเรา (คุณอาจพิจารณาชุดนี้เป็นหินสำหรับวัตถุประสงค์ของคำถามนี้) เรายังอยู่ในช่วงเริ่มต้นของโครงการและกำลังพยายามเห็นด้วยกับรูปแบบการแตกแขนง โครงการก่อนหน้าของเรานั้นใช้โมเดลรุ่นที่ไม่ได้มาตรฐานซึ่งนำไปสู่ปัญหาเมื่อจัดการ hot-fix และ patch ไปยังรุ่นที่มีอยู่ ฉันได้พบรุ่นแขนงที่แตกต่างกันจะมีความซับซ้อนมากกว่า แต่รุ่นหนึ่งที่ฉันไม่เข้าใจธรรมอย่างชัดเจนคือการไหลของคอมไพล์ ฉันอยากรู้ว่ายาก / ไม่พึงประสงค์มันจะใช้รูปแบบของการเปลี่ยนแปลงในการโค่นล้ม เห็นได้ชัดว่าจะมีความแตกต่างในแง่ของคนที่ทำงานร่วมกันในสาขา สาขาคุณลักษณะจะต้องมีการรวมศูนย์แทนที่จะ จำกัด อยู่เฉพาะที่เก็บในท้องที่ แต่แนวคิดอื่น ๆ ของแบบจำลองควรจะทำซ้ำได้ในการโค่นล้มเมื่อฉันเข้าใจ อะไรคือข้อเสียหรือความท้าทายในแนวทางนี้ สิ่งที่ฉันได้ยินคือใน SVN "การรวมมีราคาแพง" เมื่อเปรียบเทียบกับ Git แต่ฉันไม่ชัดเจนเกี่ยวกับสิ่งนี้ในทางปฏิบัติหรือว่ามันจะมีผลต่อความสามารถของเราในการใช้กระแส git เหมือนแบบจำลองกิ่ง สิ่งที่จะเป็นข้อกังวลที่ใหญ่ที่สุดกับวิธีนี้ มีวิธีการที่ชัดเจนในทำนองเดียวกันที่เป็นธรรมชาติมากขึ้นในการโค่นล้ม?
10 svn  branching  gitflow 

3
ข้อใดจะดีกว่าสำหรับการแก้ไขข้อบกพร่องเล็ก ๆ และคุณสมบัติขนาดเล็ก - ตั้งชื่อสาขาตามหมายเลขตั๋วหรือตั้งชื่อพวกเขาตามคำอธิบายคุณลักษณะ?
ฉันอยู่ในช่วงกลางของความไม่ลงรอยกัน (แน่นอน) ด้วยความเป็นผู้นำของฉันเกี่ยวกับการตั้งชื่อสาขาที่เหมาะสม สิ่งนี้ใช้กับสาขาการแก้ไขข้อบกพร่องและสาขาคุณลักษณะขนาดเล็กไม่ใช่สาขาคุณลักษณะระยะยาว สำหรับสาขาคุณลักษณะที่ใช้เวลานานเรายอมรับว่าชื่อที่มนุษย์อ่านได้ดีกว่า ต่อไปนี้เป็นมุมมองสองประการ: เหมืองแร่: การตั้งชื่อสาขาตามทีมและหมายเลขตั๋วจะดีกว่า มันทำให้ง่ายต่อการค้นหาในระบบตั๋วของเราและพิมพ์ให้สั้นลง นอกจากนี้ยังช่วยให้ค้นหาสาขาที่เกี่ยวข้องใน GIT ได้ง่ายขึ้นเมื่อค้นหาข้อมูลประวัติเกี่ยวกับตั๋ว ตัวอย่าง: team-name/12345 team-name/53719 ของพระองค์ การตั้งชื่อสาขาตามคุณสมบัติ / ฟังก์ชั่น มันทำให้การเติมข้อความอัตโนมัติง่ายขึ้นและจดจำได้ง่ายกว่าตัวเลขแต่ละตัว ตัวอย่าง: team-name/fix-that-sql-bug team-name/expand-http-parser การประนีประนอมอย่างหนึ่งที่ฉันเสนอคือ: team-name/12345-fix-that-sql-bug แต่เขาไม่ชอบสิ่งนี้เพราะมันยุ่งกับการเติมข้อความอัตโนมัติของ GIT หากนี่คือพื้นฐานความคิดเห็นโปรดอย่าลังเลที่จะให้คำแนะนำฉันเกี่ยวกับวิธีการนี้เหมาะสำหรับ SO - แต่ฉันคิดว่าเหตุผลที่ฉันให้สามารถแก้ไข / เพิ่มเติมเพื่อให้คำตอบเชิงประจักษ์

3
การควบคุมแหล่งที่มา: บทบาทและความรับผิดชอบ - แนวทางปฏิบัติที่ดีที่สุด
ฉันกำลังมองหา "วิธีปฏิบัติที่ดีที่สุด" เกี่ยวกับบทบาทและความรับผิดชอบโดยเฉพาะผู้ที่รับผิดชอบในการผสานจากสาขาการพัฒนาไปสู่การเริ่มต้น (หรือหลัก) โดยทั่วไปฉันกำลังมองหากระสุนเพื่อช่วยเหลือต้นเหตุของฉัน ให้ฉันอธิบายสิ่งที่ฉันกำลังเผชิญ ฉันเป็นผู้พัฒนานำ (เจ้าของ) ของแอปพลิเคชันเฉพาะ บริษัท ของเราเพิ่งย้ายจาก VSS (ที่ฉันเป็นผู้ดูแลระบบฐานข้อมูล VSS ที่เก็บใบสมัครของฉัน) เป็น TFS (ที่ฉันมีสิทธิ์ในสาขาการพัฒนาที่สร้างขึ้นโดยทีม "การดำเนินงาน" ของเรา) ในงานก่อนหน้านี้ฉันเป็นผู้ดูแลระบบ TFS ดังนั้นฉันรู้วิธีของฉันเกี่ยวกับ TFS และ MSBuild ฉันไม่ได้มีปัญหากับการใช้กลยุทธ์การรวมสาขาและการผสาน (สาขาหลักที่มีสาขาการพัฒนาข้อบกพร่อง / โครงการที่สร้างขึ้นตามความจำเป็นผสานกลับไปที่หลักแล้วเลื่อนไปยังสาขาที่วางจำหน่าย) ปัญหาที่ฉันมีคือ: ฉันไม่สามารถสร้างสาขาของตัวเอง ฉันต้องสร้างงาน TFS เพื่อให้สมาชิกในทีม "ปฏิบัติการ" สร้างสาขาให้ฉัน ฉันไม่สามารถผสานจากหลักไปยังสาขาการพัฒนาของฉัน ฉันต้องสร้างงาน TFS เพื่อให้สมาชิกในทีม "การดำเนินการ" ทำการผสานและหวังว่าเขาจะไม่ "ก้าวเข้าสู่" การเปลี่ยนแปลงใด ๆ ในทีมของฉันตั้งแต่ "ops guy" อาจหรืออาจไม่ใช่นักพัฒนาและแน่นอนมี …

2
คุณควรรำคาญกับสาขา SVN หรือไม่ถ้าคุณมีสาขาเดียว?
หากเราทำงานกับสาขาเดียวในการโค่นล้มเราควรจะใส่ใจด้วยหรือไม่? เราไม่สามารถทำงานบนลำตัวเพื่อเร่งความเร็วของสิ่งต่างๆได้หรือไม่ นี่คือวิธีที่เราพัฒนาด้วยการโค่นล้ม: มีลำต้นเป็น เราสร้างสาขาการพัฒนาใหม่ เราพัฒนาคุณสมบัติใหม่ในสาขานั้น เมื่อคุณสมบัติเสร็จสิ้นจะรวมอยู่ในลำต้นสาขาจะถูกลบและสาขาการพัฒนาใหม่จะทำจากลำต้น เมื่อเราต้องการที่จะปล่อยให้การผลิตเราทำแท็กจากลำตัว การแก้ไขข้อบกพร่องจะทำในสาขาจากแท็กนั้น แก้ไขข้อผิดพลาดนี้จะรวมอยู่ในลำตัว นี่คือเหตุผลที่เราสร้างสาขาการพัฒนาใหม่หลังจากคุณสมบัติเสร็จสิ้น ด้วยวิธีนี้การแก้ไขข้อบกพร่องจะรวมอยู่ในรหัสใหม่ของเราในไม่ช้า ด้านล่างเป็นแผนภาพซึ่งควรชี้แจง: ตอนนี้มีความรู้สึกว่านี่ไม่ใช่วิธีการทำงานที่มีประสิทธิภาพที่สุด เราสร้างในพื้นที่ก่อนที่จะส่งมอบซึ่งใช้เวลาประมาณ 5-10 นาที คุณสามารถเข้าใจว่านี่เป็นประสบการณ์ที่ค่อนข้างรอเวลานาน แนวคิดของสาขาการพัฒนาคือลำตัวพร้อมปล่อยเสมอ แต่สิ่งนี้ไม่เป็นความจริงในสถานการณ์ของเราอีกต่อไป บางครั้งคุณลักษณะเกือบจะพร้อมแล้วและนักพัฒนาบางคนจะเริ่มเขียนโค้ดคุณลักษณะถัดไปแล้ว (ไม่เช่นนั้นพวกเขาจะนั่งรอผู้พัฒนาหนึ่งหรือสองคนเพื่อรวมและผสาน) จากนั้นเมื่อคุณสมบัติ 1 เสร็จสิ้นจะถูกรวมเข้ากับลำต้น แต่มีคุณสมบัติบางอย่างรวมอยู่ด้วย 2 ดังนั้นเราควรจะรำคาญกับสาขาการพัฒนาเพราะเรามีเพียงสาขาเดียว? ฉันได้อ่านเกี่ยวกับการพัฒนาแบบอิงลำตัวและการแยกสาขา แต่บทความส่วนใหญ่ที่ฉันได้พบมุ่งเน้นไปที่ส่วนย่อยโดยการย่อ ฉันได้รับความประทับใจสำหรับการเปลี่ยนแปลงครั้งใหญ่ที่จะครอบคลุมการเผยแพร่หลายรายการ นี่ไม่ใช่ปัญหาที่เรามี คุณคิดอย่างไร? เราสามารถทำงานบนลำตัวได้หรือไม่? สถานการณ์เลวร้ายที่สุดคือ (ฉันคิดว่า) ว่าเราจะต้องสร้างแท็กจากลำตัวและเลือกเชอร์รี่ที่เราต้องการเพราะคอมมิท / คุณสมบัติบางอย่างยังไม่พร้อมใช้งาน
10 svn  branching  tagging 

4
เมื่อใดที่เหมาะสมที่จะเริ่มใช้การแก้ไขครั้งต่อไปของเครื่องมือเมื่อทำการทดลองอาหาร
โดยเฉพาะฉันกำลังทำงานกับเครื่องมือที่รวม DVCS และระบบการสร้าง แต่ฉันนึกภาพความท้าทายที่ฉันกำลังเผชิญจะเกิดขึ้นสำหรับทุกคนที่พัฒนาเครื่องมือ "เมตา" (คอมไพเลอร์ VCS ระบบสร้างตัวทดสอบวิ่ง ฯลฯ ) ต้องการพัฒนาผ่านการ"ทดลองใช้" คำถามของฉันคือในกระบวนการปล่อยรูปแบบการต่อสู้โดยใช้เวิร์กโฟลว์การแยกที่จุดใดฉันจะเริ่มใช้เครื่องมือรุ่นที่ใหม่กว่าในวงจรการพัฒนาของเครื่องมือได้หรือไม่ ฉันกำลังมองหากระบวนการสร้างความสมดุลระหว่าง: ใช้developเวอร์ชันของเครื่องมืออย่างต่อเนื่อง: ฉันพบว่าฉันเลิกพัฒนาตนเองเมื่อมีการเปลี่ยนแปลงเกิดขึ้น ใช้masterเวอร์ชันของเครื่องมืออย่างต่อเนื่อง: ปัญหาใด ๆ ที่ฉันค้นพบผ่านการทดลองใช้สุนัขเป็นปัญหาที่ได้รับการเผยแพร่แล้ว

7
ทำอย่างไรถึงจะทำให้ลำตัวมั่นคงเมื่อการทดสอบใช้เวลานาน
เรามีห้องทดสอบสามชุด: ชุด "เล็ก" ใช้เวลาเพียงสองสามชั่วโมงในการทำงาน ชุด "กลาง" ที่ใช้เวลาหลายชั่วโมงโดยปกติแล้วจะวิ่งทุกคืน (ทุกคืน) ชุด "ใหญ่" ที่ใช้เวลาหนึ่งสัปดาห์ + ในการทำงาน เรามีห้องทดสอบสั้นกว่านี้เยอะ แต่ฉันไม่ได้สนใจที่นี่ วิธีการในปัจจุบันคือการเรียกใช้ชุดเล็กก่อนที่แต่ละกระทำเพื่อลำต้น จากนั้นชุดสื่อขนาดกลางจะทำงานทุกคืนและหากในตอนเช้ามันกลับกลายเป็นว่าล้มเหลวเราพยายามแยกแยะว่าการกระทำของเมื่อวานนี้คือการตำหนิการย้อนกลับที่กระทำและทดสอบอีกครั้ง กระบวนการที่คล้ายกันจะทำเพียงสัปดาห์ละครั้งแทนความถี่ทุกคืนสำหรับห้องสวีทขนาดใหญ่ น่าเสียดายที่ชุดสื่อกลางล้มเหลวค่อนข้างบ่อย นั่นหมายความว่าลำตัวมักไม่เสถียรซึ่งน่ารำคาญอย่างยิ่งเมื่อคุณต้องการแก้ไขและทดสอบพวกมัน มันน่ารำคาญเพราะเมื่อฉันเช็คเอาต์จากท้ายรถฉันไม่สามารถรู้ได้อย่างแน่นอนว่ามันเสถียรและหากการทดสอบล้มเหลวฉันไม่สามารถทราบได้อย่างแน่นอนว่าเป็นความผิดของฉันหรือไม่ คำถามของฉันคือมีวิธีการบางอย่างที่รู้จักกันในการจัดการสถานการณ์ประเภทนี้ในลักษณะที่จะทำให้ลำต้นอยู่ในสภาพดีเสมอ? เช่น "กระทำเป็นพิเศษในสาขา precommit ซึ่งจะทำการปรับปรุงลำต้นเป็นระยะทุกครั้งที่ผ่านไปทุกคืน" และมันจะสำคัญไหมถ้ามันเป็นระบบควบคุมแหล่งรวมส่วนกลางอย่าง SVN หรือระบบที่กระจายแบบ git? โดยวิธีการที่ฉันเป็นนักพัฒนาจูเนียร์ที่มีความสามารถที่ จำกัด ในการเปลี่ยนแปลงสิ่งต่าง ๆ ฉันแค่พยายามที่จะเข้าใจว่ามีวิธีการจัดการกับความเจ็บปวดนี้ที่ฉันกำลังประสบ

3
dvcs - "โคลนไปที่สาขา" เป็นเวิร์กโฟลว์ทั่วไปหรือไม่
ฉันเพิ่งพูดคุย dvcs กับเพื่อนร่วมงานเนื่องจากสำนักงานของเราเริ่มพิจารณาเปลี่ยนจาก TFS (เราเป็นร้าน MS) ในกระบวนการฉันสับสนมากเพราะเขาบอกว่าแม้ว่าเขาจะใช้ Mercurial เขาไม่เคยได้ยินคำสั่ง "สาขา" หรือ "ชำระเงิน" และข้อกำหนดเหล่านี้ไม่คุ้นเคยกับเขา หลังจากสงสัยว่ามันเป็นไปได้อย่างไรที่เขาไม่ทราบเกี่ยวกับพวกเขาและอธิบายว่า dvcs ทำงานอย่างไร "แทนที่" ในไฟล์ภายในเครื่องของคุณเขาค่อนข้างสับสน เขาอธิบายว่าคล้ายกับวิธีการทำงานของ TFS เมื่อเขาต้องการสร้าง "สาขา" ที่เขาทำโดยการโคลนดังนั้นเขาจึงมีสำเนาทั้งหมดของ repo ของเขา สิ่งนี้ดูแปลกสำหรับฉัน แต่ประโยชน์ที่ฉันต้องยอมรับก็คือคุณสามารถดูหรือทำงานสองสาขาพร้อมกันเพราะไฟล์แยกกัน ในการค้นหาไซต์นี้เพื่อดูว่ามีการถามก่อนที่ฉันจะเห็นความคิดเห็นหรือไม่ว่าแหล่งข้อมูลออนไลน์จำนวนมากส่งเสริมวิธีการ "โคลนถึงสาขา" นี้เพื่อลดความโปสเตอร์ นี่เป็นเรื่องธรรมดาในชุมชน dvcs หรือไม่ และข้อดีและข้อเสียของวิธีนี้คืออะไร ฉันไม่เคยทำเลยเพราะฉันไม่จำเป็นต้องเห็นหลายสาขาพร้อมกันการสลับเร็วและฉันไม่ต้องการโคลนทั้งหมดที่เติมดิสก์ของฉัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.