ฉันสร้างสาขาของโปรเจ็กต์ SVN ที่เรียกว่า 'คุณสมบัติ' และตอนนี้เมื่อใดก็ตามที่ฉันพยายามอัปเดตโปรเจ็กต์ดังกล่าวมันจะนำโฟลเดอร์คุณสมบัติมาด้วยซึ่งมีสำเนาของโปรเจ็กต์อื่นจากสาขา มีวิธีลบสาขาออกจากที่เก็บอย่างสมบูรณ์เพื่อไม่ให้สิ่งนี้เกิดขึ้นอีกหรือไม่?
ฉันสร้างสาขาของโปรเจ็กต์ SVN ที่เรียกว่า 'คุณสมบัติ' และตอนนี้เมื่อใดก็ตามที่ฉันพยายามอัปเดตโปรเจ็กต์ดังกล่าวมันจะนำโฟลเดอร์คุณสมบัติมาด้วยซึ่งมีสำเนาของโปรเจ็กต์อื่นจากสาขา มีวิธีลบสาขาออกจากที่เก็บอย่างสมบูรณ์เพื่อไม่ให้สิ่งนี้เกิดขึ้นอีกหรือไม่?
คำตอบ:
แน่ใจ: svn rm
โฟลเดอร์ที่ไม่ต้องการและกระทำ
เพื่อหลีกเลี่ยงสถานการณ์นี้ในอนาคตฉันจะทำตามเค้าโครงที่แนะนำสำหรับโครงการ SVN:
/someproject/trunk
โฟลเดอร์ (หรือ
/trunk
ถ้าคุณต้องการใส่เพียงโครงการเดียวในที่เก็บ)/someproject/branches/somebranch
/someproject/tags
ตอนนี้เมื่อคุณตรวจสอบสำเนาที่ใช้งานได้อย่าลืมตรวจสอบเฉพาะtrunk
บางสาขาหรือบางสาขา อย่าตรวจสอบทุกอย่างในสำเนางานขนาดใหญ่ที่มีทุกสาขา 1
1 เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่ซึ่งในกรณีนี้คุณจะรู้วิธีสร้างสำเนางานตื้น ๆ
สมมติว่าสาขานี้ไม่ใช่ลิงก์ภายนอกหรือ symlink การลบสาขาควรทำได้ง่ายเพียงแค่:
svn rm branches/< mybranch >
svn ci -m "message"
หากคุณต้องการทำสิ่งนี้ในที่เก็บให้อัปเดตเพื่อลบออกจากสำเนาที่ใช้งานได้คุณสามารถทำสิ่งต่อไปนี้:
svn rm http://< myurl >/< myrepo >/branches/< mybranch >
จากนั้นเรียกใช้:
svn update
สำหรับผู้ที่ใช้TortoiseSVNคุณสามารถทำได้โดยใช้ Repository Browser (มีชื่อว่า "Repo-browser" ในเมนูบริบท)
ค้นหาโฟลเดอร์สาขาที่คุณต้องการลบคลิกขวาแล้วเลือก "ลบ"
ป้อนข้อความคอมมิตของคุณเท่านี้ก็เสร็จเรียบร้อย
คุณยังสามารถลบสาขาบนรีโมทได้โดยตรง เมื่อทำเสร็จแล้วการอัปเดตครั้งต่อไปจะลบออกจากสำเนาการทำงานของคุณ
svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"
^
สั้นสำหรับ URL ของระยะไกลเท่าที่เห็นใน 'ข้อมูล SVN' เครื่องหมายคำพูดคู่จำเป็นสำหรับบรรทัดคำสั่งของ Windows เนื่องจาก^
เป็นอักขระพิเศษ
คำสั่งนี้จะใช้ได้เช่นกันหากคุณไม่เคยเช็คเอาท์สาขา
คุณสามารถลบโฟลเดอร์คุณสมบัติได้เช่นเดียวกับที่อื่น ๆ ในการชำระเงินของคุณจากนั้นจึงทำการเปลี่ยนแปลง
เพื่อป้องกันปัญหานี้ในอนาคตฉันขอแนะนำให้คุณทำตามหลักการตั้งชื่อสำหรับรูปแบบ SVN
ให้แต่ละโครงการมีลำต้นกิ่งก้านโฟลเดอร์แท็กเมื่อสร้างขึ้น
svn
+ project1
+ trunk
+ src
+ etc...
+ branches
+ features
+ src
+ etc...
+ tags
+ project2
+ trunk
+ branches
+ tags
จากสำเนาการทำงาน:
svn rm branches/features
svn commit -m "delete stale feature branch"
คำสั่งในการลบสาขามีดังนี้:
svn ลบ -m "<your message>" <branch url>
หากคุณไม่ต้องการดึง / ชำระเงิน repo ทั้งหมดให้ดำเนินการคำสั่งต่อไปนี้บนเทอร์มินัลของคุณ:
1) รับเส้นทางสัมบูรณ์ของไดเร็กทอรีที่จะมีสำเนาการทำงานของคุณ
> pwd
2) เริ่มการชำระเงินรหัส
svn> ชำระเงิน svn <branch url> <พา ธ สัมบูรณ์จากจุดที่ 1>
ขั้นตอนข้างต้นจะทำให้คุณได้รับไฟล์ที่อยู่ในโฟลเดอร์สาขาไม่ใช่ทั้งโฟลเดอร์