อ่าน 3 นาที
การสร้างสาขา (การควบคุมเวอร์ชัน)
การสร้างสาขา (Branching ) ใน ระบบควบคุมเวอร์ชัน และ การจัดการการกำหนดค่าซอฟต์แวร์ คือการทำสำเนาของวัตถุภายใต้การควบคุมเวอร์ชัน (เช่น ไฟล์ ซอร์สโค้ด หรือ โครงสร้างไดเร็กทอรี )...
การสร้างสาขา (การควบคุมเวอร์ชัน)
การสร้างสาขา (Branching ) ในระบบควบคุมเวอร์ชันและการจัดการการกำหนดค่าซอฟต์แวร์คือการทำสำเนาของวัตถุภายใต้การควบคุมเวอร์ชัน (เช่น ไฟล์ ซอร์สโค้ดหรือโครงสร้างไดเร็กทอรี ) แต่ละวัตถุสามารถแก้ไขแยกกันได้และพร้อมกัน ทำให้วัตถุเหล่านั้นแตกต่างกัน ในบริบทนี้ วัตถุเหล่านั้นเรียกว่าสาขาผู้ใช้ระบบควบคุมเวอร์ชันสามารถสร้างสาขาใดก็ได้
สาขาต่างๆ เรียกอีกอย่างว่าต้นไม้สายหรือโค้ดไลน์สาขาต้นกำเนิดบางครั้งเรียกว่าสาขาแม่สาขาต้นน้ำ (หรือเรียกสั้นๆ ว่าต้นน้ำโดย เฉพาะ อย่างยิ่งหากสาขาเหล่านั้นได้รับการดูแลโดยองค์กรหรือบุคคลที่แตกต่างกัน) หรือสาย สนับสนุน
กระโปรงหลังรถ
สาขาย่อยคือสาขาที่มีสาขาแม่ สาขาที่ไม่มีสาขาแม่เรียกว่าลำต้นหรือเมนไลน์[ 1 ]บางครั้งลำต้นก็ถูกเรียกว่า HEAD อย่างไม่เป็นทางการ แต่คำว่า HEAD ที่ถูกต้องไม่ได้หมายถึงสาขา แต่หมายถึงคอมมิตล่าสุดในสาขาที่กำหนด และทั้งลำต้นและแต่ละสาขาที่มีชื่อจะมี HEAD ของตัวเอง ลำต้นมักหมายถึงฐานของโครงการที่การพัฒนาจะดำเนินต่อไป หากนักพัฒนาทำงานเฉพาะบนลำต้น (เรียกว่าการพัฒนาแบบใช้ลำต้น ) ลำต้นจะมีเวอร์ชันล่าสุดของโครงการอยู่เสมอ แต่ดังนั้นจึงอาจเป็นเวอร์ชันที่ไม่ เสถียรที่สุดด้วย วิธีการอีกอย่างหนึ่งคือการแยกสาขาออกจากลำต้น ดำเนินการเปลี่ยนแปลงในสาขานั้น และรวมการเปลี่ยนแปลงกลับเข้าไปในลำต้นเมื่อสาขานั้นได้รับการพิสูจน์แล้วว่าเสถียรและใช้งานได้ ขึ้นอยู่กับโหมดการพัฒนาและนโยบายคอมมิต ลำต้นอาจมีเวอร์ชันที่เสถียรที่สุดหรือเสถียรน้อยที่สุด หรืออยู่ระหว่างนั้น คำอื่นๆ สำหรับลำต้น ได้แก่baseline, mainlineและmasterแม้ว่าในบางกรณีจะใช้ในความหมายที่คล้ายกันแต่แตกต่างกัน – ดูการควบคุมเวอร์ชัน § คำศัพท์ทั่วไป โดยทั่วไปแล้ว งานพัฒนาหลักจะเกิดขึ้นในสาขาหลัก (trunk branch) และเวอร์ชันที่เสถียรจะถูกแยกออกเป็นสาขาย่อย (branch) ส่วนการแก้ไขข้อผิดพลาดเป็นครั้งคราวจะถูกรวมจากสาขาย่อยไปยังสาขาหลัก เมื่อมีการพัฒนาเวอร์ชันในอนาคตในสาขาที่ไม่ใช่สาขาหลัก (non-trunk branch) มักจะทำในโครงการที่ไม่ค่อยมีการเปลี่ยนแปลง หรือในกรณีที่คาดว่าการเปลี่ยนแปลงนั้นจะใช้เวลานานในการพัฒนาจนกว่าจะพร้อมสำหรับการรวมเข้ากับสาขาหลัก
การควบรวม
โดยทั่วไป การสร้างสาขาหมายถึงความสามารถในการรวมหรือผสานการเปลี่ยนแปลงกลับไปยังสาขาหลักในภายหลัง บ่อยครั้งที่การเปลี่ยนแปลงจะถูกรวมกลับไปยังสาขาหลัก แม้ว่าสาขาหลักนั้นจะไม่ใช่สาขาแม่ก็ตาม สาขาที่ไม่ได้ตั้งใจจะรวมเข้าด้วยกัน (เช่น เนื่องจากได้รับการอนุญาต ใช้งานใหม่ ภายใต้ใบอนุญาตที่ไม่เข้ากันโดยบุคคลที่สาม หรือพยายามที่จะใช้เพื่อวัตถุประสงค์ที่แตกต่างออกไป) มักเรียกว่า ฟ อร์ก (fork )
แรงจูงใจในการแตกแขนง
สาขาช่วยให้สามารถพัฒนาส่วนต่างๆ ของซอฟต์แวร์ไปพร้อมๆ กันได้[ 2 ]โครงการขนาดใหญ่จำเป็นต้องมีผู้รับผิดชอบหลายฝ่าย รวมถึงนักพัฒนา ผู้จัดการการสร้าง และ เจ้าหน้าที่ ประกันคุณภาพนอกจากนี้ อาจต้องมีการบำรุงรักษาการเผยแพร่หลายเวอร์ชันบนแพลตฟอร์มระบบปฏิบัติการที่แตกต่างกัน สาขาช่วยให้ผู้มีส่วนร่วมสามารถแยกการเปลี่ยนแปลงโดยไม่ทำให้โค้ดเบสไม่เสถียร เช่นการแก้ไขข้อบกพร่องคุณสมบัติ ใหม่ [ 3 ]และการรวมเวอร์ชัน การเปลี่ยนแปลงเหล่านี้อาจถูก รวมเข้าด้วย กัน (ซิงโครไนซ์ ใหม่ ) ในภายหลังหลังจากการทดสอบ
สาขาต่างๆ ยังสามารถใช้เพื่อดำเนินการแยกสาขาของผู้ขายซึ่งเป็นกลยุทธ์ในการใช้ ติดตาม และอาจแก้ไขซอร์สโค้ดที่เผยแพร่โดยบุคคลภายนอก "ต้นน้ำ" ("ผู้ขาย") ด้วยวิธีการนี้ ซึ่งค่อนข้างเป็นที่นิยมตั้งแต่ สมัย CVSจะมีการสร้างสาขาแยกต่างหากเพื่อเก็บโค้ดที่ผู้ขายจัดหาให้ สาขานี้จะได้รับการอัปเดตด้วยการเผยแพร่ต้นน้ำใหม่ และรวมเข้ากับโค้ดเบสหลักเมื่อจำเป็น[ 4 ]
สาขาการพัฒนา
สาขาการพัฒนาหรือโครงสร้างการพัฒนาของซอฟต์แวร์ คือเวอร์ชันที่อยู่ระหว่างการพัฒนาและยังไม่ได้เผยแพร่ อย่างเป็นทางการ ใน ชุมชน โอเพนซอร์สแนวคิดเรื่องการเผยแพร่โดยทั่วไปเป็นเพียงคำเปรียบเทียบ เนื่องจากทุกคนสามารถตรวจสอบเวอร์ชันใดก็ได้ที่ต้องการ ไม่ว่าจะเป็นเวอร์ชันในสาขาการพัฒนาหรือไม่ก็ตาม บ่อยครั้งที่เวอร์ชันที่จะกลายเป็น เวอร์ชัน หลัก ถัดไป จะถูกเรียกว่าสาขาการพัฒนา อย่างไรก็ตาม มักจะมีเวอร์ชันของซอฟต์แวร์มากกว่าหนึ่งเวอร์ชันที่อยู่ระหว่างการพัฒนาในเวลาเดียวกัน
โดยทั่วไป สาขาการพัฒนาจะเป็นสาขาหลักระบบควบคุมเวอร์ชันบางระบบมีศัพท์เฉพาะสำหรับสาขาการพัฒนาหลัก ตัวอย่างเช่น ในCVSจะเรียกว่าสาขา "MAIN" Gitใช้ "master" เป็นค่าเริ่มต้น แม้ว่าGitHub [ 5 ] [ 6 ]และGitLabจะเปลี่ยนไปใช้ "main" หลังจากเหตุการณ์ฆาตกรรมจอร์จ ฟลอยด์
กิ่งเงาหรือกิ่งเวทมนตร์
ในCVSNTนั้น สาขา เงาหรือ สาขา วิเศษจะ "จำลอง" การเปลี่ยนแปลงที่เกิดขึ้นในสาขาต้นทาง เพื่อให้ง่ายต่อการดูแลรักษาการเปลี่ยนแปลงเล็กๆ น้อยๆ (cvc เป็นระบบสร้างแพ็กเกจแบบโอเพนซอร์สที่รวมระบบควบคุมเวอร์ชันสำหรับแพ็กเกจที่สร้างโดยrPath )
การควบคุมการแก้ไขแบบกระจาย
โคลนที่เก็บข้อมูล
ในการควบคุมเวอร์ชันแบบกระจายศูนย์นั้นสามารถคัดลอกคลังเก็บข้อมูลทั้งหมด พร้อมด้วยสาขาต่างๆ และนำไปทำงานต่อได้Monotone (mtn), Mercurial (hg) และgitเรียกกระบวนการนี้ว่า "clone" ส่วนBazaarเรียกว่า "branch"
ในระบบควบคุมเวอร์ชันแบบกระจาย บางระบบ เช่นDarcsจะไม่มีการแยกความแตกต่างระหว่างที่เก็บข้อมูลและสาขา ในระบบเหล่านี้ การดึงสำเนาของที่เก็บข้อมูลจะเทียบเท่ากับการสร้างสาขา
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การสร้างสาขา (การควบคุมเวอร์ชัน)
การสร้างสาขา (Branching ) ใน ระบบควบคุมเวอร์ชัน และ การจัดการการกำหนดค่าซอฟต์แวร์ คือการทำสำเนาของวัตถุภายใต้การควบคุมเวอร์ชัน (เช่น ไฟล์ ซอร์สโค้ด หรือ โครงสร้างไดเร็กทอรี )...
กระโปรงหลังรถ
สาขาย่อย คือสาขาที่มีสาขาแม่ สาขาที่ไม่มีสาขาแม่เรียกว่า ลำต้น หรือเมน ไลน์ [ 1 ] บางครั้งลำต้นก็ถูกเรียกว่า HEAD อย่างไม่เป็นทางการ แต่คำว่า HEAD ที่ถูกต้องไม่ได้หมายถึงสาขา แต่หมายถึงคอมมิตล่าสุดในสาขาที่กำหนด และทั้งลำต้นและแต่ละสาขาที่มีชื่อจะมี HEAD...
การควบรวม
โดยทั่วไป การสร้างสาขาหมายถึงความสามารถใน การรวม หรือ ผสาน การเปลี่ยนแปลงกลับไปยังสาขาหลักในภายหลัง บ่อยครั้งที่การเปลี่ยนแปลงจะถูกรวมกลับไปยังสาขาหลัก แม้ว่าสาขาหลักนั้นจะไม่ใช่สาขาแม่ก็ตาม สาขาที่ไม่ได้ตั้งใจจะรวมเข้าด้วยกัน (เช่น เนื่องจากได้รับ การอนุญาต...
แรงจูงใจในการแตกแขนง
สาขาช่วยให้สามารถพัฒนาส่วนต่างๆ ของซอฟต์แวร์ไปพร้อมๆ กันได้ [ 2 ] โครงการขนาดใหญ่จำเป็นต้องมีผู้รับผิดชอบหลายฝ่าย รวมถึงนักพัฒนา ผู้จัดการการสร้าง และ เจ้าหน้าที่ ประกันคุณภาพ นอกจากนี้...