ฉันเคยเห็นคำเหล่านี้มากมายรอบการโค่นล้ม (และฉันเดาว่าที่เก็บทั่วไป) การอภิปราย
ฉันใช้SVNสำหรับโครงการของฉันในช่วงไม่กี่ปีที่ผ่านมา แต่ฉันไม่เคยเข้าใจแนวคิดทั้งหมดของไดเรกทอรีเหล่านี้
พวกเขาหมายถึงอะไร?
ฉันเคยเห็นคำเหล่านี้มากมายรอบการโค่นล้ม (และฉันเดาว่าที่เก็บทั่วไป) การอภิปราย
ฉันใช้SVNสำหรับโครงการของฉันในช่วงไม่กี่ปีที่ผ่านมา แต่ฉันไม่เคยเข้าใจแนวคิดทั้งหมดของไดเรกทอรีเหล่านี้
พวกเขาหมายถึงอะไร?
คำตอบ:
อืมฉันไม่แน่ใจว่าฉันเห็นด้วยกับแท็กของนิคที่คล้ายกับสาขา แท็กเป็นเพียงเครื่องหมาย
Trunkจะเป็นตัวหลักของการพัฒนาโดยมีจุดเริ่มต้นตั้งแต่เริ่มโครงการจนถึงปัจจุบัน
สาขาจะเป็นสำเนาของรหัสที่ได้จากจุดที่แน่นอนในลำต้นที่ใช้สำหรับการใช้การเปลี่ยนแปลงที่สำคัญกับรหัสในขณะที่รักษาความสมบูรณ์ของรหัสในลำต้น หากการเปลี่ยนแปลงที่สำคัญทำงานตามแผนพวกเขามักจะรวมกลับเข้าไปในลำต้น
แท็กจะเป็นจุดในเวลาที่ลำต้นหรือสาขาที่คุณต้องการรักษา เหตุผลหลักสองประการในการสงวนรักษาคือสิ่งนี้เป็นซอฟต์แวร์รุ่นใหญ่ไม่ว่าจะเป็น alpha, beta, RC หรือ RTM หรือนี่คือจุดที่เสถียรที่สุดของซอฟต์แวร์ก่อนที่จะทำการแก้ไขครั้งใหญ่บนลำตัว
ในโครงการที่มาเปิดสาขาที่สำคัญที่ไม่ได้รับการยอมรับในลำต้นโดยผู้มีส่วนได้เสียโครงการจะกลายเป็นฐานสำหรับงา - เช่นโครงการแยกกันโดยสิ้นเชิงที่ใช้แหล่งกำเนิดที่มีรหัสแหล่งข้อมูลอื่น ๆ
ทรีย่อยของแท็กและแท็กแตกต่างจากลำต้นในวิธีต่อไปนี้:
การโค่นล้มช่วยให้ sysadmins สร้างhook hookซึ่งถูกเรียกใช้สำหรับการดำเนินการเมื่อมีเหตุการณ์บางอย่างเกิดขึ้น เช่นกระทำการเปลี่ยนแปลงที่เก็บ มันเป็นเรื่องธรรมดามากสำหรับการดำเนินการตามที่เก็บ Subversion ทั่วไปเพื่อรักษาเส้นทางใด ๆ ที่มี "/ tag /" ที่จะป้องกันการเขียนหลังจากการสร้าง; ผลลัพธ์สุทธิคือแท็กที่สร้างขึ้นครั้งเดียวจะไม่เปลี่ยนรูป (อย่างน้อยกับผู้ใช้ "ธรรมดา") สิ่งนี้ทำผ่านทางเบ็ดสคริปต์ซึ่งบังคับใช้ไม่สามารถเปลี่ยนแปลงได้โดยการป้องกันการเปลี่ยนแปลงเพิ่มเติมถ้าแท็กเป็นโหนดแม่ของวัตถุที่เปลี่ยนแปลง
การโค่นล้มยังเพิ่มฟีเจอร์ตั้งแต่รุ่น 1.5 ที่เกี่ยวข้องกับ "การติดตามการรวมสาขา" เพื่อให้การเปลี่ยนแปลงที่มุ่งมั่นในสาขาสามารถรวมกลับเข้าไปในลำต้นได้ด้วยการสนับสนุนการรวมที่เพิ่มขึ้น "อัจฉริยะ"
Tags
ไดเรกทอรีมักจะใช้สำหรับการทดสอบเหตุการณ์สำคัญและการตรวจสอบโดยผู้ใช้ปกติ นี่จะเป็นสถานที่ที่ดีสำหรับวางต้นแบบเช่นกัน (แค่ความคิดบางอย่างที่อยู่บนหัวของฉัน)
สิ่งแรกคือ @AndrewFinnell และ @KenLiu ชี้ให้เห็นใน SVN ไดเรกทอรีชื่อตัวเองไม่มีความหมายอะไร - "ลำตัวสาขาและแท็ก" เป็นเพียงการประชุมทั่วไปที่ใช้โดยที่เก็บส่วนใหญ่ ไม่ทุกโครงการใช้ไดเรกทอรีทั้งหมด (เป็นเรื่องปกติพอสมควรที่จะไม่ใช้ "แท็ก" เลย) และอันที่จริงไม่มีอะไรหยุดคุณจากการเรียกพวกเขาทุกอย่างที่คุณต้องการ
ฉันจะอธิบายสถานการณ์การใช้งานทั่วไปของกิ่งและแท็กและให้ตัวอย่างสถานการณ์ว่าจะใช้งานอย่างไร
Trunk : พื้นที่พัฒนาหลัก นี่คือที่วางจำหน่ายครั้งใหญ่ครั้งต่อไปของคุณและมีคุณสมบัติใหม่ล่าสุดทั้งหมด
สาขา : ทุกครั้งที่คุณปล่อยรุ่นใหญ่มันจะสร้างสาขาขึ้น สิ่งนี้ช่วยให้คุณสามารถแก้ไขข้อผิดพลาดและสร้างรีลีสใหม่โดยไม่ต้องปล่อยฟีเจอร์ใหม่ล่าสุด - อาจยังไม่เสร็จหรือยังไม่ทดลอง -
แท็ก : ทุกครั้งที่คุณปล่อยเวอร์ชัน (ปล่อยครั้งสุดท้าย, รีลีสผู้สมัคร (RC) และเบต้า) คุณสร้างแท็กสำหรับมัน สิ่งนี้จะช่วยให้คุณทำสำเนาของรหัส ณ เวลานั้นเหมือนที่อยู่ในสถานะนั้นทำให้คุณสามารถย้อนกลับและสร้างข้อผิดพลาดใด ๆ หากจำเป็นในรุ่นที่ผ่านมาหรือปล่อยรุ่นที่ผ่านมาเหมือนเดิม กิ่งก้านและแท็กใน SVN นั้นมีน้ำหนักเบา - บนเซิร์ฟเวอร์มันไม่ได้ทำสำเนาเต็มของไฟล์เพียงแค่เครื่องหมายบอกว่า "ไฟล์เหล่านี้ถูกคัดลอกในการแก้ไขนี้" ซึ่งใช้เวลาเพียงไม่กี่ไบต์ เมื่อคำนึงถึงเรื่องนี้คุณไม่ควรกังวลเกี่ยวกับการสร้างแท็กสำหรับรหัสที่ออกจำหน่ายใด ๆ อย่างที่ฉันได้กล่าวไปแล้วก่อนหน้านี้แท็กมักจะถูกละเว้นและแทนที่รายการเปลี่ยนแปลงหรือเอกสารอื่น ๆ จะอธิบายหมายเลขการแก้ไขเมื่อมีการวางจำหน่าย
ตัวอย่างเช่นสมมติว่าคุณเริ่มโครงการใหม่ คุณเริ่มทำงานใน "trunk" ในสิ่งที่ในที่สุดจะออกเป็นรุ่น 1.0
เมื่อ 1.0.0 เสร็จแล้วคุณแยกสาขาไปยังสาขา "1.0" ใหม่และสร้างแท็ก "1.0.0" ตอนนี้ทำงานกับสิ่งที่ในที่สุดจะเป็น 1.1 ยังคงอยู่ในลำตัว
คุณพบข้อบกพร่องบางอย่างในรหัสและแก้ไขในลำตัวแล้วรวมการแก้ไขไปยังสาขา 1.0 นอกจากนี้คุณยังสามารถทำสิ่งที่ตรงกันข้ามและแก้ไขข้อบกพร่องในสาขา 1.0 แล้วรวมพวกมันกลับไปที่ลำตัว แต่โดยทั่วไปโครงการมักจะผสานกับการรวมทางเดียวเท่านั้นเพื่อลดโอกาสที่จะหายไป บางครั้งข้อผิดพลาดสามารถแก้ไขได้ใน 1.0 เพราะล้าสมัยใน 1.1 ไม่สำคัญ: คุณต้องการให้แน่ใจว่าคุณไม่ได้ปล่อย 1.1 ด้วยข้อผิดพลาดเดียวกับที่ได้รับการแก้ไขใน 1.0
เมื่อคุณพบข้อบกพร่องมากพอ (หรืออาจเป็นหนึ่งในข้อบกพร่องที่สำคัญ) คุณตัดสินใจที่จะทำรุ่น 1.0.1 ดังนั้นคุณสร้างแท็ก "1.0.1" จากสาขา 1.0 และปล่อยโค้ด ณ จุดนี้ลำต้นจะมีสิ่งที่จะเป็น 1.1 และสาขา "1.0" มีรหัส 1.0.1 ครั้งต่อไปที่คุณปล่อยการอัปเดตเป็น 1.0 จะเป็น 1.0.2
ในที่สุดคุณก็พร้อมที่จะปล่อย 1.1 แต่คุณต้องการเบต้าก่อน ในกรณีนี้คุณอาจจะทำสาขา "1.1" และแท็ก "1.1beta1" ทีนี้ลองหาว่าอะไรจะเป็น 1.2 (หรืออาจจะ 2.0) ต่อเนื่อง แต่การทำงานที่ 1.1 จะดำเนินต่อไปในสาขา "1.1"
เมื่อคุณปล่อย 1.1 ขั้นสุดท้ายคุณจะทำแท็ก "1.1" จากสาขา "1.1"
คุณยังสามารถรักษา 1.0 หากคุณต้องการแก้ไขข้อผิดพลาดการย้ายระหว่างสามสาขา (1.0, 1.1 และลำตัว) สิ่งที่สำคัญอย่างยิ่งสำหรับซอฟต์แวร์หลักทุกรุ่นที่คุณมีอยู่คุณมีสาขาที่มีรหัสเวอร์ชันล่าสุดสำหรับเวอร์ชันนั้น
การใช้กิ่งไม้ก็เพื่อคุณสมบัติ นี่คือที่ที่คุณแยกสาขา (หรือหนึ่งในสาขาย่อยของคุณ) และทำงานกับคุณสมบัติใหม่ในการแยก เมื่อคุณสมบัติเสร็จสมบูรณ์คุณจะรวมกลับเข้ามาและลบสาขา
แนวคิดของเรื่องนี้คือเมื่อคุณกำลังทำงานกับสิ่งที่ก่อกวน (ที่จะขัดขวางหรือขัดขวางผู้อื่นจากการทำงานของพวกเขา) สิ่งที่ทดลอง (ที่อาจไม่ทำให้มัน) หรืออาจเป็นเพียงบางสิ่งที่ใช้เวลานาน (และคุณกลัวว่ามันจะปล่อย 1.2 รุ่นขึ้นมาเมื่อคุณพร้อมที่จะแตกกิ่งออกเป็นสองส่วน) คุณสามารถแยกมันได้ในสาขา โดยทั่วไปแล้วคุณจะทำให้มันทันสมัยด้วยลำตัวโดยการรวมการเปลี่ยนแปลงเข้ากับมันตลอดเวลาซึ่งทำให้ง่ายต่อการรวมใหม่ (รวมกลับไปที่ลำตัว) เมื่อคุณทำเสร็จแล้ว
โปรดทราบว่ารูปแบบการกำหนดเวอร์ชันที่ฉันใช้ที่นี่เป็นหนึ่งในหลาย ๆ บางทีมจะทำการแก้ไขข้อผิดพลาด / การบำรุงรักษารุ่น 1.1, 1.2 และอื่น ๆ และการเปลี่ยนแปลงที่สำคัญเช่น 1.x, 2.x ฯลฯ การใช้งานที่นี่เหมือนกัน แต่คุณอาจตั้งชื่อสาขา "1" หรือ "1 .x "แทน" 1.0 "หรือ" 1.0.x " (นอกจากนี้การกำหนดเวอร์ชันแบบ semanticเป็นแนวทางที่ดีในการทำหมายเลขรุ่น)
นอกจากสิ่งที่ Nick ได้กล่าวไว้คุณสามารถหาข้อมูลเพิ่มเติมได้ที่Streamed Lines: รูปแบบการแตกแขนงเพื่อการพัฒนาซอฟต์แวร์แบบขนาน
ในรูปนี้main
คือลำต้นrel1-maint
เป็นสาขาและ1.0
เป็นแท็ก
โดยทั่วไป (มุมมองผู้ไม่เชื่อเรื่องพระเจ้าเครื่องมือ) สาขาเป็นกลไกที่ใช้สำหรับการพัฒนาแบบขนาน SCM สามารถมีได้ตั้งแต่ 0 ถึง n สาขา การโค่นล้มมี 0
Trunkเป็นสาขาหลักที่แนะนำโดยการโค่นล้มแต่คุณไม่จำเป็นต้องสร้างมันขึ้นมา คุณสามารถเรียกมันว่า 'หลัก' หรือ 'รุ่น' หรือไม่มีเลยก็ได้!
สาขาแสดงถึงความพยายามในการพัฒนา ไม่ควรตั้งชื่อตามแหล่งข้อมูล (เช่น 'vonc_branch') แต่หลัง:
แท็กคือสแน็ปช็อตของไฟล์เพื่อกลับไปสู่สถานะนั้นได้อย่างง่ายดาย ปัญหาคือว่าแท็กและสาขาเดียวกันในการโค่นล้ม และฉันขอแนะนำวิธีการหวาดระแวง:
คุณสามารถใช้หนึ่งในสคริปต์ควบคุมการเข้าถึงที่มาพร้อมกับการโค่นล้มเพื่อป้องกันไม่ให้ใครทำอะไรนอกจากสร้างสำเนาใหม่ในพื้นที่แท็ก
แท็กถือเป็นที่สิ้นสุด เนื้อหาไม่ควรเปลี่ยนแปลง ไม่เคย เคย คุณลืมบรรทัดในบันทึกย่อประจำรุ่นหรือไม่? สร้างแท็กใหม่ เลิกใช้แล้วหรือลบอันเก่าออก
ตอนนี้ฉันอ่านมากเกี่ยวกับ "การรวมกลับเช่นนี้ในสาขาดังกล่าวและจากนั้นในที่สุดในสาขาลำต้น" ที่เรียกว่าขั้นตอนการทำงานผสานและมีอะไรที่บังคับใช้ที่นี่ มันไม่ได้เป็นเพราะคุณมีสาขาลำต้นที่คุณต้องผสานกลับอะไร
โดยการประชุมสาขาลำต้นสามารถเป็นตัวแทนของสถานะปัจจุบันของการพัฒนาของคุณ แต่สำหรับโครงการลำดับง่าย ๆ นั่นคือโครงการที่มี:
เพราะด้วยหนึ่ง (หรือทั้งหมด) ของสถานการณ์เหล่านั้นคุณจะได้รับ 'ลำต้น' สี่ตัว 'สี่พัฒนาการปัจจุบัน' และไม่ใช่ทุกสิ่งที่คุณทำในการพัฒนาขนานเหล่านั้นจำเป็นที่จะต้องรวมกลับเข้าไปใน 'ลำต้น'
ใน SVN แท็กและสาขานั้นคล้ายกันมาก
Tag = ชิ้นส่วนที่กำหนดในเวลาปกติจะใช้สำหรับเผยแพร่
Branch = ยังเป็นส่วนที่กำหนดในเวลาที่การพัฒนาสามารถดำเนินต่อไปโดยปกติจะใช้สำหรับเวอร์ชันหลักเช่น 1.0, 1.5, 2.0, ฯลฯ จากนั้นเมื่อคุณปล่อยแท็กสาขา สิ่งนี้ช่วยให้คุณสามารถสนับสนุนการผลิตต่อไปได้ในขณะที่เดินหน้าต่อไปด้วยการทำลายการเปลี่ยนแปลงในลำ
Trunk = พื้นที่ทำงานของการพัฒนานี่คือที่ที่การพัฒนาทั้งหมดควรจะเกิดขึ้นจากนั้นเปลี่ยนการผสานกลับจากการออกของสาขา
พวกเขาไม่มีความหมายที่เป็นทางการใด ๆ โฟลเดอร์เป็นโฟลเดอร์สำหรับ SVN พวกเขาเป็นวิธีที่ได้รับการยอมรับโดยทั่วไปในการจัดระเบียบโครงการของคุณ
ลำตัวเป็นที่ที่คุณเก็บสายการพัฒนาหลักไว้ โฟลเดอร์ branch เป็นที่ที่คุณอาจสร้าง, branch, ซึ่งยากที่จะอธิบายในโพสต์สั้น ๆ
สาขาคือสำเนาของชุดย่อยของโครงการที่คุณทำงานแยกจากลำต้น อาจเป็นเพราะการทดลองที่ไม่สามารถไปได้ทุกที่หรืออาจเป็นรุ่นถัดไปซึ่งคุณจะรวมกลับเข้าไปในลำต้นเมื่อมันเสถียร
และโฟลเดอร์แท็กสำหรับสร้างสำเนาที่เก็บแท็กของที่เก็บของคุณโดยปกติจะอยู่ที่จุดตรวจปล่อย
แต่อย่างที่ฉันบอกกับ SVN โฟลเดอร์คือโฟลเดอร์ branch
, trunk
และแท็กเป็นเพียงการประชุม
ฉันใช้คำว่า 'คัดลอก' อย่างอิสระ SVN ไม่ได้ทำสำเนาสิ่งต่าง ๆ ในที่เก็บจริง
ลำต้นเป็นสายการพัฒนาที่มีรหัสที่มาใหม่ล่าสุดและคุณลักษณะ มันควรจะมีการแก้ไขข้อบกพร่องล่าสุดในมันเช่นเดียวกับคุณสมบัติล่าสุดที่เพิ่มเข้าไปในโครงการ
สาขามักจะใช้ในการทำบางสิ่งบางอย่างออกมาจากลำต้น (หรือสายการพัฒนาอื่น ๆ ) ที่อาจจะทำลายการสร้าง คุณสมบัติใหม่มักจะถูกสร้างขึ้นในสาขาแล้วผสานกลับเข้าไปในลำต้น สาขามักจะมีรหัสที่ไม่จำเป็นต้องได้รับการอนุมัติสำหรับสายการพัฒนาที่แยกจาก ตัวอย่างเช่นโปรแกรมเมอร์สามารถลองปรับให้เหมาะสมกับบางสิ่งในสาขาและผสานกลับเข้าไปในสายการพัฒนาเมื่อการเพิ่มประสิทธิภาพเป็นที่น่าพอใจ
แท็กเป็นภาพรวมของพื้นที่เก็บข้อมูลในเวลาใดเวลาหนึ่ง ไม่ควรพัฒนาสิ่งเหล่านี้ ส่วนใหญ่มักจะใช้เพื่อคัดลอกสิ่งที่เผยแพร่ให้กับลูกค้าเพื่อให้คุณสามารถเข้าถึงสิ่งที่ลูกค้าใช้งานได้ง่าย
นี่คือลิงก์ไปยังคำแนะนำที่ดีมากสำหรับที่เก็บ:
บทความใน Wikipedia นั้นก็ควรค่าแก่การอ่านด้วยเช่นกัน
ตอนนี้คือสิ่งที่เกี่ยวกับการพัฒนาซอฟต์แวร์ไม่มีความรู้ที่สอดคล้องกันเกี่ยวกับอะไรทุกคนดูเหมือนว่าจะมีวิธีของตัวเอง แต่นั่นเป็นเพราะมันเป็นวินัยที่ค่อนข้างเล็กอยู่แล้ว
นี่เป็นวิธีง่าย ๆ ของฉัน
trunk - ไดเรคทอรี trunk มีเนื้อหางานที่ได้รับการอนุมัติและผสานมากที่สุด ตรงกันข้ามกับสิ่งที่หลายคนสารภาพลำต้นของฉันเป็นเพียงงานที่สะอาดเรียบร้อยได้รับการอนุมัติไม่ใช่พื้นที่พัฒนา แต่เป็นพื้นที่ปล่อย
ในบางช่วงเวลาที่ลำตัวดูเหมือนว่าพร้อมที่จะปล่อยแล้วมันจะถูกแท็กและปล่อย
สาขา - ไดเรกทอรีของสาขาประกอบด้วยการทดลองและงานต่อเนื่อง ทำงานภายใต้สาขาอยู่ที่นั่นจนกว่าจะได้รับอนุมัติให้รวมเข้ากับลำต้น สำหรับฉันนี้เป็นพื้นที่ที่ทำงานทั้งหมดเสร็จแล้ว
ตัวอย่างเช่น: ฉันสามารถมีการวนซ้ำ -5สาขาสำหรับรอบที่ห้าของการพัฒนาเกี่ยวกับผลิตภัณฑ์, อาจจะเป็นสาขาต้นแบบ -9สำหรับรอบที่เก้าของการทดลองและอื่น ๆ
แท็ก - ไดเรกทอรีแท็กประกอบด้วยสแน็ปช็อตของกิ่งที่ได้รับการอนุมัติและการปล่อยลำต้น เมื่อใดก็ตามที่สาขาได้รับการอนุมัติให้รวมเข้าไปในลำต้นหรือปล่อยจากลำตัวสแน็ปช็อตของสาขาที่อนุมัติหรือปล่อยลำต้นจะทำภายใต้แท็ก
ฉันคิดว่ามีแท็กที่ฉันสามารถข้ามไปมาผ่านจุดที่น่าสนใจได้อย่างง่ายดาย
ฉันพบนี้กวดวิชาที่ดีเกี่ยวกับ SVN เมื่อผมมองขึ้นเว็บไซต์ของผู้เขียนของOpenCV 2 วิสัยทัศน์การใช้คอมพิวเตอร์โปรแกรมตำราและฉันคิดว่าฉันควรจะแบ่งปัน
เขามีการสอนวิธีใช้ SVN และวลี 'ลำตัว', 'แท็ก' และ 'สาขา' หมายถึงอะไร
อ้างโดยตรงจากการสอนของเขา:
รุ่นปัจจุบันของโครงการซอฟต์แวร์ของคุณซึ่งทีมงานของคุณกำลังทำงานมักจะอยู่ภายใต้ไดเรกทอรีที่เรียกว่าลำต้น เมื่อโครงการวิวัฒนาการนักพัฒนาจะอัปเดตเวอร์ชันแก้ไขข้อบกพร่องเพิ่มคุณสมบัติใหม่) และส่งการเปลี่ยนแปลงของเขาภายใต้ไดเรกทอรีนั้น
ณ เวลาใดก็ตามคุณอาจต้องการตรึงเวอร์ชันและจับภาพรวมของซอฟต์แวร์ตามที่อยู่ในขั้นตอนของการพัฒนา โดยทั่วไปจะเกี่ยวข้องกับซอฟต์แวร์เวอร์ชันอย่างเป็นทางการของคุณตัวอย่างเช่นซอฟต์แวร์ที่คุณจะส่งมอบให้กับลูกค้าของคุณ สแน็ปช็อตเหล่านี้อยู่ภายใต้ไดเรกทอรีแท็กของโครงการของคุณ
ในที่สุดมันก็มักจะมีประโยชน์ในการสร้างบางครั้งบรรทัดใหม่ของการพัฒนาซอฟต์แวร์ของคุณ เช่นนี้เกิดขึ้นเมื่อคุณต้องการทดสอบการใช้งานทางเลือกที่คุณต้องแก้ไขซอฟต์แวร์ของคุณ แต่คุณไม่ต้องการที่จะส่งการเปลี่ยนแปลงเหล่านี้ไปยังโครงการหลักจนกว่าคุณจะตัดสินใจว่าจะใช้โซลูชั่นใหม่ ทีมหลักสามารถทำงานในโครงการต่อไปได้ในขณะที่ผู้พัฒนารายอื่นทำงานในต้นแบบ คุณจะใส่เส้นใหม่เหล่านี้ของการพัฒนาของโครงการภายใต้ไดเรกทอรีที่เรียกว่าสาขา
ไดเรกทอรี trunk เป็นไดเรกทอรีที่คุณคุ้นเคยมากที่สุดเพราะถูกใช้เพื่อระงับการเปลี่ยนแปลงล่าสุด codebase หลักของคุณควรอยู่ในช่วงท้าย
ไดเรกทอรีสาขาสำหรับการถือสาขาของคุณสิ่งที่พวกเขาอาจจะ
ไดเรกทอรีแท็กนั้นโดยทั่วไปสำหรับการติดแท็กชุดของไฟล์ คุณทำสิ่งนี้เช่นรีลีสซึ่งคุณต้องการให้ "1.0" เป็นไฟล์เหล่านี้ในการแก้ไขเหล่านี้และ "1.1" เป็นไฟล์เหล่านี้ในการแก้ไขเหล่านี้ โดยปกติคุณจะไม่แก้ไขแท็กเมื่อสร้างขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแท็กดูบทที่ 4 การแยกและการรวม (ในการควบคุมเวอร์ชันด้วยการโค่นล้ม )
เหตุผลหนึ่งที่ทุกคนมีคำจำกัดความที่แตกต่างกันเล็กน้อยคือการโค่นล้มใช้การสนับสนุนสำหรับสาขาและแท็กเป็นศูนย์ การโค่นล้มโดยทั่วไปกล่าวว่า: เราดูสาขาและแท็กที่มีคุณสมบัติครบถ้วนในระบบอื่นและไม่พบว่ามีประโยชน์ดังนั้นเราจึงไม่ได้ใช้อะไรเลย เพียงแค่ทำสำเนาลงในไดเรกทอรีใหม่ที่มีชื่อการประชุมแทน แน่นอนว่าทุกคนมีอิสระที่จะมีการประชุมที่แตกต่างกันเล็กน้อย เพื่อให้เข้าใจถึงความแตกต่างระหว่างที่จริงแท็กและสำเนา + ประชุมการตั้งชื่อเพียงดูวิกิพีเดียรายการแท็กการโค่นล้มและสาขา
Tag = ชิ้นส่วนที่กำหนดในเวลาปกติจะใช้สำหรับเผยแพร่
ฉันคิดว่านี่คือสิ่งที่คนทั่วไปหมายถึงด้วย "แท็ก" แต่ในการโค่นล้ม:
พวกเขาไม่มีความหมายที่เป็นทางการใด ๆ โฟลเดอร์เป็นโฟลเดอร์สำหรับ SVN
ซึ่งฉันพบว่าค่อนข้างสับสน: ระบบควบคุมการแก้ไขที่ไม่รู้อะไรเกี่ยวกับกิ่งไม้หรือแท็ก จากมุมมองของการนำไปใช้ฉันคิดว่าวิธีการโค่นล้มของการสร้าง "สำเนา" นั้นฉลาดมาก แต่ฉันต้องรู้เกี่ยวกับมันคือสิ่งที่ฉันเรียกว่านามธรรมที่น่าสนใจ
หรือบางทีฉันเพิ่งใช้CVSมานานเกินไป
ฉันคิดว่าความสับสนบางอย่างมาจากความแตกต่างระหว่างแนวคิดของแท็กและการใช้งานใน SVN สำหรับ SVN แท็กเป็นสาขาซึ่งเป็นสำเนา การแก้ไขแท็กนั้นถือว่าผิดและเครื่องมือจริง ๆ เช่น TortoiseSVN จะเตือนคุณหากคุณพยายามแก้ไขอะไรด้วย ../tags/ .. ในพา ธ
ฉันไม่แน่ใจว่า 'แท็ก' คืออะไร แต่สาขาเป็นแนวคิดการควบคุมแหล่งที่พบได้บ่อย
โดยทั่วไปสาขาเป็นวิธีการทำงานกับการเปลี่ยนแปลงโค้ดโดยไม่มีผลกระทบกับ trunk สมมติว่าคุณต้องการเพิ่มคุณสมบัติใหม่ที่ค่อนข้างซับซ้อน คุณต้องการที่จะสามารถตรวจสอบการเปลี่ยนแปลงในขณะที่คุณทำมัน แต่ไม่ต้องการให้มันส่งผลกระทบต่อลำตัวจนกว่าคุณจะทำกับคุณสมบัติ
ก่อนอื่นคุณต้องสร้างสาขา นี่เป็นเพียงสำเนาของลำต้นเมื่อคุณสร้างสาขา จากนั้นคุณจะทำงานทั้งหมดของคุณในสาขา การเปลี่ยนแปลงใด ๆ ที่ทำในสาขาจะไม่ส่งผลกระทบต่อลำตัวดังนั้นลำต้นยังคงใช้งานได้ทำให้ผู้อื่นสามารถทำงานต่อได้ที่นั่น (เช่นการแก้ไขข้อบกพร่องหรือการปรับปรุงเล็กน้อย) เมื่อคุณสมบัติของคุณเสร็จสิ้นคุณจะต้องรวมสาขากลับเข้าไปในหีบ นี่จะย้ายการเปลี่ยนแปลงทั้งหมดของคุณจากกิ่งก้านไปยังลำตัว
มีหลายรูปแบบที่คนใช้สำหรับสาขา หากคุณมีผลิตภัณฑ์ที่รองรับรุ่นใหญ่หลายรุ่นพร้อมกันโดยปกติแต่ละรุ่นจะเป็นสาขา ที่ทำงานฉันมีสาขา QA และสาขาการผลิต ก่อนปล่อยรหัสของเราไปยัง QA เรารวมการเปลี่ยนแปลงในสาขา QA แล้วนำไปใช้งานจากที่นั่น เมื่อปล่อยไปสู่การผลิตเรารวมจากสาขา QA ไปยังสาขาการผลิตดังนั้นเราจึงรู้ว่ารหัสที่ทำงานอยู่ในการผลิตนั้นเหมือนกับการทดสอบ QA
นี่คือรายการวิกิพีเดียในสาขาเนื่องจากพวกเขาอาจอธิบายสิ่งต่าง ๆ ได้ดีกว่าที่ฉันทำได้ :)
ลำตัว : หลังจากเสร็จสิ้นการวิ่งทุกครั้งเราก็ออกมาพร้อมกับผลิตภัณฑ์ที่สามารถเปลี่ยนแปลงได้บางส่วน รุ่นเหล่านี้จะถูกเก็บไว้ในหีบ
สาขา : รหัสการพัฒนาแบบขนานทั้งหมดสำหรับการวิ่งแต่ละครั้งจะถูกเก็บไว้ในสาขา
แท็ก : ทุกครั้งที่เราเปิดตัวผลิตภัณฑ์รุ่นเบต้าบางส่วนซึ่งสามารถแก้ไขได้เราจะสร้างแท็กให้ สิ่งนี้ทำให้เรามีรหัสที่มีอยู่ ณ เวลานั้นทำให้เราสามารถกลับไปที่สถานะนั้นถ้าจำเป็นในบางช่วงระหว่างการพัฒนา
สำหรับคนที่คุ้นเคยกับ GIT ต้นแบบใน GIT จะเทียบเท่ากับ trunk ใน SVN
สาขาและแท็กมีคำศัพท์ที่เหมือนกันทั้งใน GIT และ SVN