ฉันจะสร้างสาขาใน SVN ได้อย่างไร
ฉันจะสร้างสาขาใน SVN ได้อย่างไร
คำตอบ:
การแตกกิ่งก้านสาขาในการโค่นล้มถูกอำนวยความสะดวกด้วยเครื่องมือคัดลอกที่เบาและมีประสิทธิภาพมาก
การแตกแขนงและการแท็กมีประสิทธิภาพเหมือนกัน เพียงคัดลอกทั้งโฟลเดอร์ในที่เก็บไปยังที่อื่นในที่เก็บโดยใช้svn copy
คำสั่ง
โดยทั่วไปนี่หมายความว่าโดยการประชุมสิ่งที่คัดลอกโฟลเดอร์หมายถึง - ไม่ว่าจะเป็นการสำรองข้อมูลแท็กสาขาหรืออะไรก็ตาม ขึ้นอยู่กับว่าคุณต้องการคิดอย่างไร (โดยปกติขึ้นอยู่กับเครื่องมือ SCM ที่คุณเคยใช้ในอดีต) คุณต้องตั้งค่าโครงสร้างโฟลเดอร์ภายในที่เก็บของคุณเพื่อรองรับสไตล์ของคุณ
รูปแบบทั่วไปจะมีพวงของโฟลเดอร์ที่ด้านบนของพื้นที่เก็บข้อมูลของคุณเรียกว่าtags
, branches
, trunk
ฯลฯ - ที่ช่วยให้คุณสามารถคัดลอกของคุณทั้งหมดtrunk
(หรือชุดย่อย) ลงในtags
และ / หรือbranches
โฟลเดอร์ หากคุณมีมากกว่าหนึ่งโครงการคุณอาจต้องการจำลองโครงสร้างชนิดนี้ในแต่ละโครงการ:
อาจใช้เวลาสักครู่เพื่อทำความคุ้นเคยกับแนวคิด - แต่ใช้งานได้ - ตรวจสอบให้แน่ใจว่าคุณ (และทีมของคุณ) มีความชัดเจนในการประชุมที่คุณจะใช้ เป็นความคิดที่ดีที่จะมีแบบแผนการตั้งชื่อที่ดีซึ่งเป็นสิ่งที่บอกคุณว่าเหตุใดจึงสร้างสาขา / แท็กและเหมาะสมหรือไม่ - พิจารณาวิธีเก็บสาขาที่ล้าสมัย
svn cp
จะใช้สำเนาถูกจริงแต่จะไม่คัดลอกไฟล์จริงระหว่างการแยก ดูsvnbook.red-bean.com/en/1.1/ch04s02.html
สร้างสาขาใหม่โดยใช้svn copy
คำสั่งดังต่อไปนี้:
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
-m "Creating a branch of project"
svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .
(ถ้าคุณต้องการเปลี่ยนเช็คเอาต์ปัจจุบันเป็นสาขาใหม่) หรือsvn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(ถ้าคุณต้องการมีสาขาใหม่ในไดเรกทอรีแยก) เพื่อเริ่มทำงานกับสาขาที่สร้างขึ้นใหม่
--parents
ตัวเลือกด้วยsvn copy
!
-m
svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist
ด้วยความที่มันพูดว่า-m
(ฉันแทนที่อยู่ แต่พวกเขาทำอยู่ยกเว้น Ofc ไดเรกทอรีสาขาใหม่และเส้นทางทั้งหมด + URL ที่ SVN ด้วยเหตุผลบางอย่างรวมอยู่ในข้อผิดพลาด) svn: E205009: Local, non-commit operations do not take a log message or revision properties
หาก repo ของคุณพร้อมใช้งานผ่าน https คุณสามารถใช้คำสั่งนี้เพื่อสาขา ...
svn copy https://host.example.com/repos/project/trunk \
https://host.example.com/repos/project/branches/branch-name \
-m "Creating a branch of project"
svn cp /trunk/ /branch/NEW_Branch
หากคุณมีการเปลี่ยนแปลงในเครื่องในลำตัวRsync
ให้ใช้เพื่อซิงค์การเปลี่ยนแปลง
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
วิธีนี้ svn cp
จะคัดลอกการเปลี่ยนแปลงในท้องถิ่นใด ๆ
สมมติว่าคุณต้องการสร้างสาขาจากชื่อลำตัว (เป็น "ทดสอบ") จากนั้นใช้:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
เคล็ดลับยอดนิยมสำหรับผู้ใช้ SVN ใหม่ สิ่งนี้อาจช่วยเล็กน้อยในการรับ URL ที่ถูกต้องอย่างรวดเร็ว
วิ่ง svn info
เพื่อแสดงข้อมูลที่เป็นประโยชน์เกี่ยวกับสาขาเช็คเอาต์ปัจจุบัน
URL ควร (หากคุณเรียกใช้ svn ในโฟลเดอร์รูท) ให้ URL ที่คุณต้องการคัดลอก
นอกจากนี้หากต้องการสลับไปยังสาขาที่สร้างขึ้นใหม่ให้ใช้svn switch
คำสั่ง:
svn switch http://my.repo.url/myrepo/branches/newBranchName
หากคุณวางแผนที่จะรวมสาขาของคุณฉันขอแนะนำให้คุณดูที่:
ฉันได้ยิน Subversion 1.5 สร้างการติดตามการผสานมากขึ้นฉันไม่มีประสบการณ์กับเรื่องนั้น โครงการของฉันคือ 1.4.x และ svnmerge.py เป็นเครื่องมือช่วยชีวิต!
ด้านล่างนี้เป็นขั้นตอนในการสร้างสาขาจากลำตัวโดยใช้ TortoiseSVN ในเครื่อง windows เห็นได้ชัดว่าต้องมีการติดตั้งไคลเอนต์ TortoiseSVN