เมื่อประมาณครึ่งปีที่แล้วฉันได้รับมอบหมายให้ทำการศึกษาเพื่อตอบคำถามนั้น นี่คือบทสรุปโดยอ้างอิงจากการศึกษา (ด้านล่าง)
http://msdn.microsoft.com/en-us/library/aa730834%28v=vs.80%29.aspx
... การตัดสินใจเลือกกลยุทธ์การแตกแขนงที่ดีที่สุดคือการปรับสมดุล คุณต้องแลกเปลี่ยนผลผลิตที่ได้จากความเสี่ยงที่เพิ่มขึ้น วิธีหนึ่งในการตรวจสอบกลยุทธ์ที่เลือกคือพิจารณาสถานการณ์การเปลี่ยนแปลง ตัวอย่างเช่นถ้าคุณตัดสินใจที่จะจัดแนวสาขากับสถาปัตยกรรมระบบ (ตัวอย่างเช่นสาขาหมายถึงองค์ประกอบของระบบ) และคุณคาดหวังว่าการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญคุณอาจต้องปรับโครงสร้างสาขาของคุณและกระบวนการและนโยบายที่เกี่ยวข้องกับการเปลี่ยนแปลงแต่ละครั้ง การเลือกกลยุทธ์การแยกสาขาที่ไม่เพียงพอสามารถทำให้เกิดค่าโสหุ้ยในกระบวนการและการรวมที่ยาวนานและรอบการปล่อยที่พิสูจน์ได้ว่าน่าผิดหวังสำหรับทั้งทีม ...
http://www.cmcrossroads.com/bradapp/acme/branching/
... การบูรณาการที่เพิ่มขึ้นบ่อยครั้งเป็นหนึ่งในเสาหลักแห่งความสำเร็จและการขาดงานของมันมักจะเป็นลักษณะของความล้มเหลว วิธีการจัดการโครงการในปัจจุบันมีแนวโน้มที่จะหลีกเลี่ยงโมเดลน้ำตกที่เข้มงวดและยอมรับรูปแบบเกลียวเหมือนของการพัฒนาแบบวนซ้ำ / เพิ่มขึ้นและการส่งมอบวิวัฒนาการ กลยุทธ์การบูรณาการที่เพิ่มขึ้นเช่นการผสานก่อนและบ่อยครั้งและตัวแปรต่างๆเป็นรูปแบบของการจัดการความเสี่ยงที่พยายามขจัดความเสี่ยงก่อนหน้านี้ในวงจรชีวิตเมื่อมีเวลามากขึ้นในการตอบสนอง ความสม่ำเสมอของจังหวะระหว่างการผสานรวมถูกมองเห็นโดย [Booch], [McCarthy] และ [McConnell] ในฐานะตัวบ่งชี้ชั้นนำของโครงการสุขภาพ (เช่น "ชีพจร" หรือ "การเต้นของหัวใจ")
ไม่เพียง แต่การรวมเข้าด้วยกัน แต่เนิ่นๆและบ่อยครั้งที่มีความเสี่ยงเร็วและใน "ชิ้นเล็ก ๆ " แต่ยังสื่อสารการเปลี่ยนแปลงระหว่างเพื่อนร่วมทีม ...
http://www.codinghorror.com/blog/2007/10/software-branching-and-parallel-universes.html
... ในระบบควบคุมแหล่งข้อมูลส่วนใหญ่คุณสามารถสร้างสาขาได้หลายร้อยสาขาโดยไม่มีปัญหาด้านประสิทธิภาพ แต่อย่างใด มันเป็นค่าใช้จ่ายทางจิตใจในการติดตามสาขาทั้งหมดที่คุณต้องกังวลเกี่ยวกับ ... การแตกแขนงเป็นสัตว์ร้ายที่ซับซ้อน มีหลายวิธีในการแยกสาขาและไม่มีใครสามารถบอกคุณได้ว่าคุณทำถูกหรือผิด ...
http://www.lostechies.com/blogs/derickbailey/archive/2010/02/24/branching-strategies-when-to-branch-and-merge.aspx
... มีหลายแง่มุมของระบบที่จะต้องพิจารณาเมื่อทำการแยกรหัสของคุณ ... ในที่สุดเป้าหมายก็คือการจัดเตรียม Sandbox สำหรับบริบทที่จะเขียนโค้ด ทำความเข้าใจกับตัวเลือกที่มีเมื่อแต่ละตัวเลือกเหมาะสมที่สุดกับสถานการณ์ในมือและค่าใช้จ่ายของตัวเลือกเหล่านี้จะช่วยคุณในการตัดสินใจเลือกวิธีและเวลาในการ ...
http://www.snuffybear.com/ucm_branch.htm
หมายเหตุจากการอ้างอิงอื่น ๆ ที่ระบุไว้ในที่นี้ผู้เขียนอ้างว่า"บทความนี้จะอธิบายรูปแบบการแยกสาขาที่สำคัญสามแบบที่ใช้ในโครงการวิศวกรรมซอฟต์แวร์"ดูไม่เป็นธรรม คำศัพท์ที่ใช้ดูไม่แพร่หลาย ( EFIX , Model-1,2,3ฯลฯ )
http://svn.haxx.se/users/archive-2007-10/att-0101/SCMBranchingModels-talkback.pdf
เอกสารอ้างอิงนำเสนอตัวอย่างที่น่าสนใจของความยากลำบากในการสื่อสารกลยุทธ์การแยกสาขา
http://simpleprogrammer.com/2010/06/04/simple-branching-strategy-part-1-back-to-basics/
... ทำให้มันง่าย การทำงานโดยตรงจากลำตัวเป็นวิธีที่ดีที่สุดในความคิดของฉัน
ดูเหมือนว่าจะเป็นเรื่องนอกรีตเมื่อฉันพิมพ์ลงบนหน้าจอของฉัน แต่ถ้าคุณทนกับฉันซักครู่ฉันจะแสดงให้คุณดูว่าทำไมฉันถึงคิดว่านี่เป็นสิ่งจำเป็นสำหรับกระบวนการแบบ Agile แต่ฉันจะแสดงให้คุณเห็นว่า เพื่อให้มันใช้งานได้ ...
... ถ้าฉันต้องให้เหตุผลบนพื้นฐานของการโต้แย้งที่มั่นคงมันจะเป็นคุณค่าของการบูรณาการอย่างต่อเนื่อง ฉันบล็อกเกี่ยวกับคุณค่าของ CIและแนวทางปฏิบัติที่ดีที่สุดในอดีต ฉันเป็นผู้สนับสนุนหลักของ CI ...
... คุณต้องถามคำถามกับตัวเองที่นี่จริงๆ: "ค่าใช้จ่ายทั้งหมดที่คุณเกิดขึ้นจากการทำกลยุทธ์การรวมสาขาและการผสานที่ซับซ้อนส่งผลให้เกิดมูลค่าที่แท้จริงซึ่งไม่ได้มีอยู่ในกลยุทธ์ที่ง่ายกว่านี้" ...
.. . กลยุทธ์ที่ฉันใช้อย่างมีประสิทธิภาพในอดีตและมีการพัฒนาอยู่ตลอดเวลา ฉันจะสรุปได้ที่นี่
- ทุกคนทำงานนอกลำตัว
- สาขาเมื่อคุณปล่อยรหัส
- ปิดการวางจำหน่ายเมื่อคุณต้องการสร้างการแก้ไขข้อบกพร่องสำหรับรหัสที่วางจำหน่ายแล้ว
- สาขาสำหรับต้นแบบ
...
http://www.codelathe.com/blog/index.php/2009/07/02/a-svn-branching-strategy-that-works/
... สุดท้ายโปรดจำไว้ว่าไม่มีกลยุทธ์การรวมสาขาและการรวมที่เหมาะ มันค่อนข้างขึ้นอยู่กับสภาพแวดล้อมการพัฒนาที่ไม่เหมือนใครของคุณ ...
http://blog.perforce.com/blog/?cat=62
... สถานการณ์กรณีที่เลวร้ายที่สุดคือคุณแนะนำปัญหา "semantic merge" ซึ่งผลลัพธ์ของการผสานอัตโนมัติไม่ถูกต้อง แต่คอมไพล์ OK และย่องผ่านไป การทดสอบอาจมีชีวิตรอดนานพอที่จะเป็นข้อบกพร่องที่ลูกค้าเห็นได้ จี๊ด!
การเพิ่มการดูถูกการบาดเจ็บเนื่องจากพวกเขาสามารถหลบหนีการตรวจจับได้นานขึ้นปัญหาการรวมความหมายเป็นการยากที่จะแก้ไขในภายหลังเนื่องจากการเปลี่ยนแปลงนั้นไม่สดใหม่ในใจของนักพัฒนาที่เริ่มต้นการเปลี่ยนแปลง (โดยปกติแล้วจะเป็นการดีที่สุดที่จะรวมการเปลี่ยนแปลงในไม่ช้าหลังจากที่ทำไปแล้วโดยนักพัฒนาที่เริ่มต้นการเปลี่ยนแปลงหากเป็นประโยชน์)
https://stackoverflow.com/questions/34975/branching-strategies
สมาชิกชุมชนแบ่งปันประสบการณ์ที่แตกต่างในโครงการต่าง ๆ โดยใช้กลยุทธ์การแยกสาขา ไม่มีฉันทามติที่ตกลงกันเกี่ยวกับ "ดีที่สุด" หรือ "แย่ที่สุด"
http://www.stickyminds.com/s.asp?F=S16454_COL_2
สรุปสาระสำคัญโดยย่อของสิ่งต่าง ๆ ที่นำเสนอในhttp://oreilly.com/catalog/practicalperforce/chapter/ch07.pdf
- http://www.stickyminds.com/s.asp?F=S16511_COL_2
... มีวิธีการทั่วไปสามวิธีในการตัดสินใจว่าจะแยกสาขาเมื่อใดและอย่างไร:
- สร้างสาขาที่วางจำหน่ายเมื่อคุณ "ฟีเจอร์เสร็จสมบูรณ์" และวางแผนที่จะแก้ไขปัญหาในนาทีสุดท้ายของบรรทัดโค้ดนี้ ในกรณีนี้สาขาที่วางจำหน่ายนั้นเป็น "รหัสการเตรียมการเผยแพร่" ตามที่อธิบายไว้ในรูปแบบการจัดการการกำหนดค่าซอฟต์แวร์เนื่องจากคุณคาดหวังว่ายังคงมีงานที่ต้องทำ
- เปลี่ยนสไตล์การทำงานของคุณเพื่อหลีกเลี่ยงการรวมงานในขั้นสุดท้ายโดยไม่ต้องทำงานกับสายการพัฒนาที่ใช้งานอยู่
- สาขาสำหรับงานใหม่โดยการสร้างสาขางานและการรวมที่ทำงานในสายการพัฒนาที่ใช้งานอยู่หลังจากการเปิดตัวเสร็จสมบูรณ์
... เหตุผลสำหรับการแตกแขนงคือการแยกรหัสในตอนท้ายของการปล่อยเพื่อให้มันมีเสถียรภาพ การแยกจากการแยกสาขามักจะปกปิดปัญหาด้านคุณภาพซึ่งจะปรากฏในราคาที่เพิ่มขึ้นในการบำรุงรักษาลำธารขนานก่อนที่จะวางจำหน่ายผลิตภัณฑ์ การแตกกิ่งเป็นเรื่องง่าย แต่มันคือการรวมเข้าด้วยกันและค่าใช้จ่ายทางปัญญาในการทำความเข้าใจว่าการเปลี่ยนแปลงระหว่างสาขานั้นยากอย่างไรจึงเป็นเรื่องสำคัญที่จะต้องเลือกกระบวนการที่ช่วยลดต้นทุนในการแยกและการรวม ...
http://nvie.com/posts/a-successful-git-branching-model/กลยุทธ์ Git-oriented
... เราถือว่าOrigin / Masterเป็นสาขาหลักที่ซอร์สโค้ดของ HEAD จะแสดงสถานะพร้อมการผลิตเสมอ
เราพิจารณาที่มา / พัฒนาเพื่อเป็นสาขาหลักที่ซอร์สโค้ดของ HEAD มักจะสะท้อนถึงสถานะที่มีการเปลี่ยนแปลงการพัฒนาที่ส่งมอบล่าสุดสำหรับรีลีสถัดไป บางคนเรียกสิ่งนี้ว่า "การรวมสาขา" นี่คือที่ใด ๆ สร้างตอนกลางคืนโดยอัตโนมัติถูกสร้างขึ้นจาก ....
http://svnbook.red-bean.com/en/1.5/svn.branchmerge.html
... นโยบายโครงการแตกต่างกันอย่างกว้างขวางเกี่ยวกับเมื่อมันเหมาะสมที่จะสร้างสาขาฟีเจอร์ บางโครงการไม่เคยใช้สาขาฟีเจอร์เลย: commits to / trunkเป็นฟรีสำหรับทุกคน ข้อดีของระบบนี้คือมันง่าย - ไม่มีใครจำเป็นต้องเรียนรู้เกี่ยวกับการแตกแขนงหรือรวมเข้าด้วยกัน ข้อเสียคือรหัสลำต้นมักไม่เสถียรหรือไม่สามารถใช้งานได้ โครงการอื่น ๆ ใช้กิ่งไม้สุดโต่ง: ไม่มีการเปลี่ยนแปลงที่เคยมุ่งมั่นที่จะลำต้นโดยตรง แม้แต่การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ส่วนใหญ่ก็เกิดขึ้นในสาขาอายุสั้นทบทวนอย่างรอบคอบและรวมเข้ากับลำตัว จากนั้นสาขาจะถูกลบ ระบบนี้รับประกันลำต้นที่เสถียรและใช้งานได้ตลอดเวลา แต่มีค่าใช้จ่ายมหาศาลกระบวนการค่าใช้จ่าย
โครงการส่วนใหญ่ใช้วิธีการกลางถนน พวกเขามักจะยืนยันว่า/ trunkรวบรวมและผ่านการทดสอบการถดถอยตลอดเวลา จำเป็นต้องมีสาขาคุณลักษณะเฉพาะเมื่อการเปลี่ยนแปลงจำเป็นต้องมีการทำลายล้างจำนวนมาก กฎง่ายๆคือการถามคำถามนี้: หากนักพัฒนาทำงานหลายวันและแยกการเปลี่ยนแปลงครั้งใหญ่ทั้งหมดในครั้งเดียว (เพื่อที่/ ลำต้นไม่มั่นคง) มันจะเป็นการเปลี่ยนแปลงที่ใหญ่เกินไปไหม? หากคำตอบสำหรับคำถามนั้นคือ "ใช่" การเปลี่ยนแปลงควรได้รับการพัฒนาบนสาขาคุณลักษณะ ในฐานะนักพัฒนาที่ยอมรับการเปลี่ยนแปลงที่เพิ่มขึ้นในสาขาพวกเขาสามารถตรวจสอบได้อย่างง่ายดายโดยเพื่อน
ในที่สุดก็มีปัญหาวิธีการเก็บสาขาคุณลักษณะใน "ซิงค์" ที่ดีที่สุดกับลำตัวเป็นงานที่ดำเนินการ ดังที่เราได้กล่าวไปแล้วก่อนหน้านี้มีความเสี่ยงสูงที่จะทำงานในสาขาเป็นเวลาหลายสัปดาห์หรือหลายเดือน การเปลี่ยนแปลงของลำตัวอาจดำเนินต่อไปเรื่อย ๆ จนถึงจุดที่ทั้งสองสายของการพัฒนาแตกต่างกันอย่างมากจนอาจกลายเป็นฝันร้ายที่พยายามจะรวมสาขากลับไปที่ลำต้น
สถานการณ์นี้ควรหลีกเลี่ยงโดยการรวมการเปลี่ยนแปลงลำตัวเข้ากับสาขาเป็นประจำ แต่งหน้านโยบาย: สัปดาห์ละครั้งรวมมูลค่าการเปลี่ยนเส้นทางของสัปดาห์ที่แล้วเข้ากับสาขา ...
http://thedesignspace.net/MT2archives/000680.html
... บทช่วยสอนส่วน Eclipse CVS นี้อ้างอิงจากบทความของ Paul Glezen ในเว็บไซต์ Eclipse: ทำการแยกด้วย Eclipse และ CVSและใช้โดยได้รับอนุญาตภายใต้เงื่อนไข ใบอนุญาต EPL การเปลี่ยนแปลงที่ฉันทำกับเวอร์ชันของเขาส่วนใหญ่จะขยายด้วยรูปภาพทีละขั้นตอนและคำอธิบายมากขึ้นและรวมเข้ากับบทเรียนเริ่มต้นของฉันเองในความพยายามที่จะทำให้ผู้เริ่มต้นและผู้ออกแบบสามารถเข้าถึงได้ง่ายขึ้น นักพัฒนาที่มีประสบการณ์อาจต้องการทำงานกับรุ่นของ Paul ...
http://learnsoftwareprocesses.com/2007/12/29/common-branching-strategies/
... นี่คือบางส่วนของรูปแบบการแตกแขนงทั่วไป:
- รุ่นแยกตามสาขา: หนึ่งในกลยุทธ์การแยกสาขาที่พบมากที่สุดคือจัดแนวสาขากับการวางจำหน่ายผลิตภัณฑ์ สาขาถือครองสินทรัพย์พัฒนาซอฟต์แวร์ทั้งหมดสำหรับการเปิดตัวครั้งเดียว ในบางครั้งจำเป็นต้องรวมการอัปเดตจากรีลีสหนึ่งไปยังอีกรีลีส แต่โดยปกติจะไม่รวมเข้าด้วยกัน สาขาจะถูกยกเลิกเมื่อมีการยกเลิกการวางจำหน่าย
- สาขาต่อโปรโมชั่น: วิธีการทั่วไปอีกวิธีหนึ่งคือการจัดแนวสาขากับระดับโปรโมชั่นสินทรัพย์ซอฟต์แวร์ เวอร์ชันการพัฒนาเฉพาะถูกแยกออกเป็นสาขาการทดสอบซึ่งจะทำการทดสอบการรวมและระบบทั้งหมด เมื่อคุณทำการทดสอบเสร็จสมบูรณ์สินทรัพย์การพัฒนาซอฟต์แวร์จะถูกแยกเป็นสาขาการผลิตและนำไปใช้งานในที่สุด
- สาขาต่อภารกิจ: เพื่อหลีกเลี่ยงงานที่ทับซ้อนกัน (หรือกิจกรรม) และการสูญเสียผลผลิตคุณสามารถแยกงานเหล่านั้นออกเป็นสาขาอื่นได้ โปรดทราบว่าสาขาเหล่านี้เป็นสาขาระยะสั้นที่ควรรวมเข้าด้วยกันทันทีที่งานเสร็จสมบูรณ์มิฉะนั้นความพยายามในการรวมที่จำเป็นอาจเกินกว่าผลประโยชน์ด้านการผลิตในการสร้างพวกเขาตั้งแต่แรก
- สาขาต่อส่วนประกอบ: คุณสามารถจัดตำแหน่งแต่ละสาขากับสถาปัตยกรรมระบบ ในกลยุทธ์นี้คุณแยกแต่ละองค์ประกอบ (หรือระบบย่อย) จากนั้นแต่ละทีมพัฒนาองค์ประกอบตัดสินใจเมื่อรวมรหัสกลับเข้าไปในสายการพัฒนาที่ทำหน้าที่เป็นสาขาการรวม กลยุทธ์นี้สามารถทำงานได้ดีหากสถาปัตยกรรมของระบบอยู่ในสถานที่และแต่ละองค์ประกอบมีอินเตอร์เฟซที่กำหนดไว้อย่างดี ความจริงที่ว่าคุณพัฒนาส่วนประกอบในสาขาช่วยให้สามารถควบคุมสินทรัพย์การพัฒนาซอฟต์แวร์ได้ละเอียดยิ่งขึ้น
- สาขาต่อเทคโนโลยี: กลยุทธ์การแตกสาขาอื่นที่สอดคล้องกับสถาปัตยกรรมระบบ ในกรณีนี้สาขาจะสอดคล้องกับแพลตฟอร์มเทคโนโลยี รหัสทั่วไปมีการจัดการในสาขาที่แยกต่างหาก เนื่องจากลักษณะเฉพาะของสินทรัพย์การพัฒนาซอฟต์แวร์ที่มีการจัดการในสาขาพวกเขาอาจไม่เคยผสาน ...
http://msdn.microsoft.com/en-us/library/bb668955.aspx
... อ้างอิงแนวทางการแยกและการผสานใน"แนวทางการควบคุมแหล่งที่มา"ในคู่มือนี้สำหรับข้อมูลสรุปของแนวทางการแยกและการรวม ... เมื่อทำการแยกกิ่งลองพิจารณาสิ่งต่อไปนี้:
- อย่าแยกสาขาเว้นแต่ทีมพัฒนาของคุณจะต้องทำงานกับไฟล์ชุดเดียวกันพร้อมกัน หากคุณไม่แน่ใจเกี่ยวกับสิ่งนี้คุณสามารถทำป้ายชื่อบิลด์และสร้างสาขาจากบิลด์นั้นในภายหลัง การรวมสาขาอาจต้องใช้เวลาและซับซ้อนโดยเฉพาะหากมีการเปลี่ยนแปลงที่สำคัญระหว่างสาขา
- จัดโครงสร้างต้นไม้สาขาของคุณเพื่อให้คุณต้องรวมตามลำดับชั้น (ขึ้นและลงต้นไม้สาขา) แทนที่จะข้ามลำดับชั้น การแบรนช์ข้ามลำดับชั้นต้องการให้คุณใช้การผสานแบบไม่มีฐานซึ่งต้องการการแก้ไขข้อขัดแย้งด้วยตนเองเพิ่มเติม
- ลำดับชั้นของสาขาขึ้นอยู่กับสาขาหลักและสาขาย่อยซึ่งอาจแตกต่างจากโครงสร้างทางกายภาพของซอร์สโค้ดบนดิสก์ เมื่อวางแผนการรวมของคุณโปรดจำไว้ว่าโครงสร้างสาขาแบบลอจิคัลแทนที่จะเป็นโครงสร้างแบบฟิสิคัลบนดิสก์
- อย่าแตกกิ่งก้านสาขาลึกเกินไป เนื่องจากต้องใช้เวลาในการดำเนินการแต่ละผสานและแก้ไขข้อขัดแย้งโครงสร้างการแยกสาขาที่ลึกอาจหมายความว่าการเปลี่ยนแปลงในสาขาย่อยอาจใช้เวลานานมากในการเผยแพร่ไปยังสาขาหลัก สิ่งนี้อาจส่งผลเสียต่อกำหนดการของโครงการและเพิ่มเวลาในการแก้ไขข้อบกพร่อง
- สาขาในระดับสูงและรวมถึงการกำหนดค่าและไฟล์ต้นฉบับ
- วิวัฒนาการโครงสร้างการแตกแขนงของคุณเมื่อเวลาผ่านไป
- การผสานต้องการนักพัฒนาตั้งแต่หนึ่งรายขึ้นไปเพื่อดำเนินการผสานและแก้ไขข้อขัดแย้ง แหล่งที่มาที่ผสานต้องได้รับการทดสอบอย่างถี่ถ้วนเนื่องจากไม่ใช่เรื่องผิดปกติที่จะทำการตัดสินใจที่ไม่ถูกต้องซึ่งจะทำให้การสร้างไม่เสถียร
- การผสานข้ามลำดับชั้นสาขาเป็นเรื่องยากโดยเฉพาะอย่างยิ่งและคุณต้องจัดการด้วยตนเองด้วยความขัดแย้งหลายอย่างที่สามารถจัดการได้โดยอัตโนมัติ
การตัดสินใจว่าจะสร้างสาขาจะสามารถลดลงได้หรือไม่ว่าค่าใช้จ่ายในการรวมความขัดแย้งในแบบเรียลไทม์นั้นสูงกว่าต้นทุนค่าใช้จ่ายในการรวมความขัดแย้งระหว่างสาขา ...
http://kashfarooq.wordpress.com/2009/11/23/bazaar-branching-strategy-with-a-subversion-trunk/
http://social.msdn.microsoft.com/Forums/en/tfsversioncontrol/thread/f127676c-8f05-410c-9a30-0eb43a26a9fa
การอภิปรายแนวทางปฏิบัติที่ดีที่สุดสำหรับกลยุทธ์การแยกสาขาในกรณีของระบบที่กำลังพัฒนา
http://branchingguidance.codeplex.com/
"ไมโครซอฟท์เซิร์ฟเวอร์มูลฐานทีมกิ่งแนะแนว" - เอกสารขนาดใหญ่และมีรายละเอียดที่มีข้อแนะนำที่เหมาะกับโครงการที่แตกต่าง: HTML รุ่นที่นี่ พิสูจน์ว่า Microsoft ไม่เชื่อในกลยุทธ์ wrt branching แบบเดียวที่เหมาะกับทุกคน
https://stackoverflow.com/questions/597707/best-branching-strategy-when-doing-continuous-integration https://tackoverflowflow.com/questions/597707/
กลยุทธ์การแยกสาขาที่ดีที่สุดคืออะไรเมื่อคุณต้องการรวมระบบอย่างต่อเนื่อง ... คำตอบขึ้นอยู่กับขนาดของทีมและคุณภาพของการควบคุมแหล่งที่มาของคุณและความสามารถในการรวมชุดการเปลี่ยนแปลงที่ซับซ้อนอย่างถูกต้อง ...
- http://www.zeroturnaround.com/blog/continuous-integration-and-feature-branches/
การวิเคราะห์รายละเอียดเพิ่มเติมเกี่ยวกับการทำงานร่วมกันของการแยกสาขาด้วยการรวมอย่างต่อเนื่องโดยอาศัยประสบการณ์ที่เป็นรูปธรรมกับ Hudson / Jenkins - พร้อมด้วยการอ้างอิงที่เป็นประโยชน์สองรายการ
.. . การค้นพบที่ยิ่งใหญ่ที่สุดของฉันคือแม้ว่า CI จะทำหน้าที่ผลักดันและรับข้อเสนอแนะบ่อยครั้ง (เช่นคลัสเตอร์ CI จะให้ข้อเสนอแนะแก่คุณว่าเวิร์กสเตชันของคุณไม่สามารถให้เวลาคุณเท่ากันได้) - ทีมต้องทำงานบนพื้นฐานเดียวกัน ...
วัสดุที่ใช้
http://codicesoftware.blogspot.com/2010/03/branching-strategies.html
... CVS และ SVN ไม่สนับสนุนกลยุทธ์การรวมสาขา / การรวมทั้งหมดเนื่องจากพวกเขาไม่สามารถทำได้ ... ... กฎง่ายๆ: สร้างสาขางานสำหรับทุกคุณสมบัติใหม่หรือแก้ไขข้อผิดพลาดที่คุณนำไปใช้ ... มันฟังดูเหมือน overkill สำหรับผู้ใช้ SVN / CVS แต่คุณรู้ว่า SCM ที่ทันสมัยใด ๆ จะช่วยให้คุณสามารถสร้างสาขาได้ในไม่กี่วินาที
หมายเหตุสำคัญ: หากคุณมองอย่างระมัดระวังคุณจะเห็นว่าฉันกำลังพูดถึงการใช้สาขางานเป็นนักเปลี่ยนแปลงคนรวย ...
http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m1/index.jsp?topic=/com.ibm.rational.clearcase.cc_proj.doc/c_bntr_plnbrstrat.htm
... การกำหนดนโยบายได้รับอิทธิพลจากการพัฒนา วัตถุประสงค์ของโครงการและให้กลไกในการควบคุมการวิวัฒนาการของรหัสฐาน มีนโยบายการแบรนช์แตกต่างกันมากพอ ๆ กับองค์กรที่ใช้การควบคุมเวอร์ชัน Rational ClearCase แต่ก็มีความคล้ายคลึงกันที่สะท้อนการยึดมั่นร่วมกันกับแนวทางปฏิบัติที่ดีที่สุด ...
http://blogs.open.collab.net/svn/2007/11/branching-strat.html
... รูปแบบการโค่นล้ม (หรือโมเดลโอเพ่นซอร์สทั่วไปอย่างแม่นยำมากขึ้น) คือสิ่งที่แสดงในโมเดลลำตัวที่ไม่เสถียร .. .
http://en.wikipedia.org/wiki/Trunk_%28software%29
ในด้านการพัฒนาซอฟแวร์, ลำต้นหมายถึงชื่อสาขา (รุ่น) ของต้นไม้ไฟล์ที่อยู่ภายใต้การควบคุมการแก้ไข ลำต้นมักจะหมายถึงเป็นฐานของโครงการที่การพัฒนาดำเนินไป หากนักพัฒนาทำงานบนลำตัวโดยเฉพาะมันก็จะมีเวอร์ชั่นที่ล้ำสมัยที่สุดของโครงการ แต่ก็อาจจะเป็นเวอร์ชั่นที่ไม่เสถียรที่สุด อีกวิธีหนึ่งคือการแยกสาขาออกจากลำต้นใช้การเปลี่ยนแปลงในสาขานั้นและรวมการเปลี่ยนแปลงกลับเข้าไปในลำต้นเมื่อสาขาได้รับการพิสูจน์แล้วว่ามีความเสถียรและทำงานได้ ขึ้นอยู่กับโหมดการพัฒนาและการคอมมิทนโยบาย trunk อาจมีรุ่นที่เสถียรที่สุดหรือมีความเสถียรน้อยที่สุดหรือมีบางอย่างที่อยู่ระหว่าง
บ่อยครั้งที่งานหลักของนักพัฒนาเกิดขึ้นในลำต้นและเวอร์ชันที่เสถียรจะถูกแยกและการแก้ไขข้อผิดพลาดเป็นครั้งคราวจะถูกผสานจากกิ่งก้านกับลำต้น เมื่อการพัฒนาเวอร์ชันในอนาคตเสร็จสิ้นในสาขาที่ไม่ใช่ของลำต้นมันมักจะทำสำหรับโครงการที่ไม่เปลี่ยนแปลงบ่อยครั้งหรือที่การเปลี่ยนแปลงที่คาดว่าจะใช้เวลานานในการพัฒนาจนกว่ามันจะพร้อมสำหรับการรวมในลำต้น .. .
http://www.mcqueeney.com/roller/page/tom/20060919
... ข้อความเหล่านี้มาจากการสัมมนาทางเว็บเรื่องแนวปฏิบัติที่ดีที่สุดในการโค่นล้มซึ่งดำเนินการ 30 สิงหาคม 2549 โดย CollabNet ... กลยุทธ์ขององค์กรที่สอง: trunk ที่ไม่เสถียรเทียบกับ trunk ที่เสถียร ... ... กำหนดค่า trunk ที่ไม่เสถียรเมื่อเป็นไปได้ ...
https://stackoverflow.com/questions/153812/subversion-is-trunk-really-the-best-place-for-the-main-development
ใน SVN, trunk เป็นสถานที่แนะนำสำหรับการพัฒนาหลักและฉันใช้การประชุมนี้ สำหรับโครงการทั้งหมดของฉัน อย่างไรก็ตามนี่หมายความว่าลำตัวบางครั้งไม่เสถียรหรือแตกหัก ... ... จะดีกว่าหรือไม่ที่จะทำ "การพัฒนาป่า" ในบางสาขาเช่น / branch / dev และรวมเข้ากับลำต้นเท่านั้นเมื่อการสร้างมีเหตุผล ของแข็ง?
- ... ลำต้นเป็นสิ่งที่การพัฒนาอย่างต่อเนื่องจะเกิดขึ้น คุณไม่ควรมีปัญหากับรหัส "เสีย" หากทุกคนทดสอบการเปลี่ยนแปลงก่อนที่จะส่งมอบ กฎง่ายๆคือทำการอัปเดต (รับรหัสล่าสุดทั้งหมดจาก repos) หลังจากที่คุณเขียนรหัสการเปลี่ยนแปลงของคุณ จากนั้นสร้างและทำการทดสอบหน่วย หากทุกอย่างสร้างและทำงานคุณควรตรวจสอบสิ่งต่อไปนี้ใน ...
- ... Nope trunk ไม่ใช่ที่ที่ดีที่สุด ที่องค์กรของเราเราทำตามวิธีนี้เสมอ: Trunk มีรหัสการเปิดใช้ดังนั้นจึงรวบรวมอยู่เสมอ ด้วยการเปิดตัวแต่ละครั้ง / เหตุการณ์สำคัญเราเปิดสาขาใหม่ เมื่อใดก็ตามที่นักพัฒนาซอฟต์แวร์เป็นเจ้าของรายการเขา / เธอจะสร้างสาขาใหม่ให้กับสาขาที่วางจำหน่ายนี้และผสานเข้ากับสาขาที่วางจำหน่ายหลังจากการทดสอบ สาขาที่วางจำหน่ายถูกรวมเข้ากับลำตัวหลังจากการทดสอบระบบ ...
http://blog.yclian.com/2009/03/working-on-branches-and-stable-trunk.html
... ฉันเคยทำงานในช่วงท้ายเพราะสำหรับโครงการทั้งหมดที่ฉันทำงานอยู่ ผู้พัฒนาหรือทีมเดียวทำให้มั่นใจได้ว่าการเช็คอินรหัสทุกคนได้ผ่านการทดสอบในท้องถิ่นแล้ว มิฉะนั้นเราสร้างขึ้น (เรายังคง) สาขาการแก้ไขข้อบกพร่องรหัสขนาดใหญ่สำหรับคุณสมบัติใหม่ ฯลฯ
ประมาณ 2 เดือนที่ผ่านมาผมมีเซสชั่นคอมไพล์สั้น ๆ กับมาลและเขาร่วมกับฉันความคิดของเรื่อง / สาขา และในขณะที่ทีมของฉันเริ่มที่จะเติบโตขึ้นพร้อมกับนักพัฒนามากขึ้นฉันรู้สึกว่าจำเป็นที่จะต้องส่งเสริมให้มีการแตกแขนงมากขึ้นและตอนนี้มันกลายเป็นกฎ สำหรับโครงการที่มีการทดสอบอัตโนมัติที่กำหนดโดยการตั้งค่า CI รับประกันความเสถียรของลำต้นและการฝึกฝนนี้สามารถเข้ากันได้ดี
เราไม่ได้ใช้คอมไพล์ แต่เป็นการโค่นล้มเพราะนั่นคือวิธีที่เราเริ่มต้นและเรายังคงรู้สึกสบายใจในตอนนี้ (เกือบตลอดเวลา) ...
http://www.ericsink.com/scm/scm_branches.html
นี่เป็นส่วนหนึ่งของหนังสือออนไลน์ที่ชื่อว่าHOWTOซึ่งเป็นแนวทางปฏิบัติที่ดีที่สุดในการควบคุมแหล่งที่มาการควบคุมเวอร์ชันและการจัดการการกำหนดค่า ...
... Eric's Preferred Branching ฝึกฝน ... เก็บลำต้น "ไม่เสถียร" โดยทั่วไป ทำการพัฒนาที่แอคทีฟของคุณในลำตัวความเสถียรของมันเพิ่มขึ้นเมื่อคุณเข้าใกล้รีลีส หลังจากที่คุณจัดส่งสร้างสาขาการบำรุงรักษาและทำให้มันมีเสถียรภาพมากเสมอ ...
... ในบทถัดไปฉันจะเจาะลึกหัวข้อการรวมสาขา ...
http://marc.info/?l=forrest-dev&m=112504297928196&w=2
เริ่มจดหมายของกระทู้ที่พูดคุยถึงกลยุทธ์การแยกสาขาสำหรับโครงการApache Forrest
- โปรดทราบว่าในปัจจุบันโครงการดูเหมือนจะใช้โมเดลลำตัวที่ไม่เสถียรพร้อมกิ่งไม้ที่วางจำหน่าย:
- "งานพัฒนาบนลำต้นของ SVN ... มี" รีลีสสาขา "ของ SVN เช่น forrest_07_branch" ( แนวทางโครงการ )
- "การสร้างแพ็คเกจผู้สมัครรับการปล่อยตัว ... 17. สร้างสาขาการบำรุงรักษาใน SVN ... " ( วิธีการเปิดตัว )
เอกสารการแยกย่อยของ O'Reilly CVS:
http://commons.oreilly.com/wiki/index.php/Essential_CVS/Using_CVS/Tagging_and_Branching#Basically_stable
- ... ปรัชญาการแยกสาขาที่มีเสถียรภาพโดยทั่วไประบุว่าลำต้นควรมีข้อมูลโครงการที่ใกล้จะพร้อมสำหรับการเปิดตัวเสมอ ... ... การเปลี่ยนแปลงที่หลากหลายของปรัชญานี้ช่วยให้ทุกสิ่งที่ผ่านการทดสอบหน่วยนักพัฒนาจะถูกรวมเข้ากับ กระโปรงหลังรถ. วิธีการที่ผ่อนคลายเช่นนี้จำเป็นต้องมีผู้สมัครที่จะได้รับการแยกออกและผ่านการวิเคราะห์ QA แบบเต็มก่อนที่จะตีพิมพ์ ...
- ... ปรัชญาที่ไม่แน่นอนระบุว่า trunk ควรมีรหัสล่าสุดโดยไม่คำนึงถึงความเสถียรของมันและผู้สมัครควรจะถูกแยกออกสำหรับ QA
... รูปแบบที่ผ่อนปรนมากขึ้นยังอนุญาตให้มีการแยกย่อยสำหรับโค้ดทดลองการเปลี่ยนโครงสร้างและรหัสกรณีพิเศษอื่น ๆ การรวมสาขากลับเข้าไปในลำต้นจะดำเนินการโดยผู้จัดการสาขา ...
- หมายเหตุทรัพยากรด้านบนไม่ปรากฏในการค้นหาใด ๆ ที่ฉันทำ (แนวทางที่เกี่ยวข้องกับ CVS ไม่เป็นที่นิยมอีกต่อไป?)
แนวทางปฏิบัติที่ดีที่สุดใน SCM (บทความบังคับ)ที่
http://www.perforce.com/perforce/papers/bestpractices.html
... พื้นที่ทั่วไปหกประการของการปรับใช้ SCM และแนวปฏิบัติที่ดีที่สุดบางประการในแต่ละพื้นที่เหล่านั้น บทต่อไปนี้อธิบายแต่ละรายการ ...
พื้นที่ทำงาน Codelines, กิ่ง, เปลี่ยนการขยายพันธุ์, Builds, กระบวนการ ...