การลบสาขา SVN


91

ฉันสร้างสาขาของโปรเจ็กต์ SVN ที่เรียกว่า 'คุณสมบัติ' และตอนนี้เมื่อใดก็ตามที่ฉันพยายามอัปเดตโปรเจ็กต์ดังกล่าวมันจะนำโฟลเดอร์คุณสมบัติมาด้วยซึ่งมีสำเนาของโปรเจ็กต์อื่นจากสาขา มีวิธีลบสาขาออกจากที่เก็บอย่างสมบูรณ์เพื่อไม่ให้สิ่งนี้เกิดขึ้นอีกหรือไม่?


อาจซ้ำกันของลบสาขา
Jim G.

คำตอบ:


111

แน่ใจ: svn rmโฟลเดอร์ที่ไม่ต้องการและกระทำ

เพื่อหลีกเลี่ยงสถานการณ์นี้ในอนาคตฉันจะทำตามเค้าโครงที่แนะนำสำหรับโครงการ SVN:

  • ใส่รหัสของคุณใน /someproject/trunkโฟลเดอร์ (หรือ /trunkถ้าคุณต้องการใส่เพียงโครงการเดียวในที่เก็บ)
  • สร้างสาขาเป็น /someproject/branches/somebranch
  • ใส่แท็กไว้ข้างใต้ /someproject/tags

ตอนนี้เมื่อคุณตรวจสอบสำเนาที่ใช้งานได้อย่าลืมตรวจสอบเฉพาะtrunkบางสาขาหรือบางสาขา อย่าตรวจสอบทุกอย่างในสำเนางานขนาดใหญ่ที่มีทุกสาขา 1

1 เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่ซึ่งในกรณีนี้คุณจะรู้วิธีสร้างสำเนางานตื้น ๆ


58

สมมติว่าสาขานี้ไม่ใช่ลิงก์ภายนอกหรือ symlink การลบสาขาควรทำได้ง่ายเพียงแค่:

svn rm branches/< mybranch >

svn ci -m "message"

หากคุณต้องการทำสิ่งนี้ในที่เก็บให้อัปเดตเพื่อลบออกจากสำเนาที่ใช้งานได้คุณสามารถทำสิ่งต่อไปนี้:

svn rm http://< myurl >/< myrepo >/branches/< mybranch >

จากนั้นเรียกใช้:

svn update

26
จากหนังสือ : "อย่างไรก็ตามการลบ URL จะเกิดขึ้นทันทีดังนั้นคุณต้องส่งข้อความบันทึก [ด้วย -m]" ดังนั้นsvn rm -m message http://...และไม่updateจำเป็นต้องใช้
rymo

57

สำหรับผู้ที่ใช้TortoiseSVNคุณสามารถทำได้โดยใช้ Repository Browser (มีชื่อว่า "Repo-browser" ในเมนูบริบท)

เมนูบริบท

ค้นหาโฟลเดอร์สาขาที่คุณต้องการลบคลิกขวาแล้วเลือก "ลบ"

การลบโฟลเดอร์

ป้อนข้อความคอมมิตของคุณเท่านี้ก็เสร็จเรียบร้อย

กระทำ


ทำการอัปเดต SVN เพื่อลบโฟลเดอร์ออกจากดิสก์ของคุณ (หากไม่ได้ลบก่อนที่จะลบสาขาออก)
ArieKanarie

12

คุณยังสามารถลบสาขาบนรีโมทได้โดยตรง เมื่อทำเสร็จแล้วการอัปเดตครั้งต่อไปจะลบออกจากสำเนาการทำงานของคุณ

svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"

^สั้นสำหรับ URL ของระยะไกลเท่าที่เห็นใน 'ข้อมูล SVN' เครื่องหมายคำพูดคู่จำเป็นสำหรับบรรทัดคำสั่งของ Windows เนื่องจาก^เป็นอักขระพิเศษ

คำสั่งนี้จะใช้ได้เช่นกันหากคุณไม่เคยเช็คเอาท์สาขา


ฉันใช้สิ่งนี้จาก Mac และใช้งานได้ดี! เมื่อฉันลองคำตอบยอดนิยมฉันได้รับคำตอบ "'/ local / path / to / repo / branch / branch-name' ไม่ใช่สำเนาที่ใช้งานได้" ดังนั้นฉันคงไม่สามารถตรวจสอบสาขาที่ฉันทำได้
Mad Bernard

3

คุณสามารถลบโฟลเดอร์คุณสมบัติได้เช่นเดียวกับที่อื่น ๆ ในการชำระเงินของคุณจากนั้นจึงทำการเปลี่ยนแปลง

เพื่อป้องกันปัญหานี้ในอนาคตฉันขอแนะนำให้คุณทำตามหลักการตั้งชื่อสำหรับรูปแบบ SVN

ให้แต่ละโครงการมีลำต้นกิ่งก้านโฟลเดอร์แท็กเมื่อสร้างขึ้น

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags


3

คำสั่งในการลบสาขามีดังนี้:

svn ลบ -m "<your message>" <branch url>

หากคุณไม่ต้องการดึง / ชำระเงิน repo ทั้งหมดให้ดำเนินการคำสั่งต่อไปนี้บนเทอร์มินัลของคุณ:

1) รับเส้นทางสัมบูรณ์ของไดเร็กทอรีที่จะมีสำเนาการทำงานของคุณ
> pwd
2) เริ่มการชำระเงินรหัส
svn> ชำระเงิน svn <branch url> <พา ธ สัมบูรณ์จากจุดที่ 1>

ขั้นตอนข้างต้นจะทำให้คุณได้รับไฟล์ที่อยู่ในโฟลเดอร์สาขาไม่ใช่ทั้งโฟลเดอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.