คุณจะลบ Subversion control สำหรับโฟลเดอร์ได้อย่างไร?


259

ฉันมีโฟลเดอร์c:\websites\testและมีโฟลเดอร์และไฟล์ที่เช็กเอาต์จากที่เก็บที่ไม่มีอยู่อีกต่อไป ฉันจะรับการโค่นล้มเพื่อหยุดการติดตามโฟลเดอร์นั้นและโฟลเดอร์ย่อยและไฟล์ใด ๆ ได้อย่างไร

ฉันรู้ว่าฉันสามารถลบ.svnโฟลเดอร์ได้ง่าย แต่มีโฟลเดอร์ย่อยจำนวนมากในหลายเลเยอร์


1
หากคุณใช้ TortioseSVN ฉันเขียนบทความในบล็อกที่แสดงวิธีที่เร็วที่สุดในการทำเช่นนี้ โพสต์ของฉันมีคำแนะนำทีละขั้นตอนพร้อมรูปภาพ โพสต์นั้นมีอยู่ที่http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
แช้ดแคมป์เบล

อ้างถึงคำตอบของฉันซึ่งได้ช่วยหลายคน stackoverflow.com/questions/4889619/…
Ajit Vaze

คำตอบ:


258

นอกจากนี้หากคุณใช้ TortoiseSVN เพียงส่งออกไปยังตำแหน่งคัดลอกที่ใช้งานได้ในปัจจุบันและจะลบโฟลเดอร์และไฟล์. svn

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

อัพเดตคำตอบสำหรับการโค่นล้ม 1.7:
ในการโค่นล้ม 1.7 สำเนาการทำงานได้รับการแก้ไขอย่างกว้างขวาง มีโฟลเดอร์. svn เพียงโฟลเดอร์เดียวเท่านั้นที่อยู่ในฐานของสำเนาทำงาน หากคุณใช้ 1.7 ให้ลบโฟลเดอร์. svn และเนื้อหาในนั้นเป็นวิธีง่ายๆ (ไม่ว่าจะใช้ TortoiseSVN หรือเครื่องมือบรรทัดคำสั่ง)


8
ลิงก์ตอนนี้เป็น 404 ลิงก์ใหม่: tortoisesvn.net/docs/release/TortoiseSVN_en/ ......การส่งออกเกินปัจจุบันดูเหมือนจะเป็นกรณีพิเศษที่จะลบไฟล์. svn หากคุณบอกว่าเก็บไฟล์ไว้โดยไม่ผ่าน
lilbyrdie

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

เซิร์ฟเวอร์ไม่มีส่วนเกี่ยวข้องกับไอคอนโฟลเดอร์ Tortoise แต่หากพวกเขาไม่อัปเดตคุณสามารถลองฆ่ากระบวนการ TSVNCache มันควรรีสตาร์ทโดยอัตโนมัติ
crashmstr

1
ในกรณีของฉันฉันลบโฟลเดอร์คอมไพล์พร้อมกับโฟลเดอร์. svn ด้วย
Aftab Ahmed Kalhoro

155

บน Linux สิ่งนี้จะทำงาน:

  find . -iname ".svn" -print0 | xargs -0 rm -r

10
ทำงานบน Mac OS ด้วย
emish

2
ก่อนรันคำสั่งตรวจสอบให้แน่ใจว่าคุณป้อนไดเร็กทอรีที่เหมาะสมตัวอย่างเช่น: cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo

ฉันได้รับ rm: ไม่มีตัวถูกดำเนินการ
วินเทอร์

119

ลองส่งออก SVN

คุณควรทำสิ่งนี้:

svn export /path/to/old/working/copy /path/to/plain/code

จากนั้นเพียงแค่ลบสำเนาทำงานเก่า

TortoiseSVN ยังมีคุณสมบัติการส่งออกซึ่งทำงานในลักษณะเดียวกัน


4
ขอบคุณที่ให้คำตอบที่ทำงานกับบรรทัดคำสั่ง :) ยอดเยี่ยมสำหรับพวกเราที่ใช้เทอร์มินัล
epochwolf

16
หากฉันเข้าใจถูกต้องคำสั่งนี้จะส่งออกไฟล์ภายใต้การควบคุมการโค่นล้มเท่านั้น ดังนั้นหากบางไฟล์หรือโฟลเดอร์ยังไม่ถูกเพิ่มลงใน Subversion หรือถูกลบออกจากการควบคุมการโค่นล้มคุณจะสูญเสียไฟล์เหล่านี้ในการส่งออกของคุณ ...
Chris

@ Chris ใช่คุณถูกต้อง สิ่งนี้จะส่งออกไฟล์ที่มีเวอร์ชันเท่านั้น สิ่งนี้เป็นสิ่งที่ดีสำหรับการส่งออกรหัสและทิ้งสิ่งประดิษฐ์ที่ได้รับ ฯลฯ แต่อาจไม่ใช่เครื่องมือที่เหมาะสมสำหรับทุกงาน
pkaeding

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

ฉันได้รับข้อผิดพลาด:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky

32

หากคุณใช้ Windows คุณสามารถค้นหาในโฟลเดอร์นั้น.svnและจะแสดงรายการทั้งหมด การกดCtrl+ Aจะเป็นการเลือกทั้งหมดของพวกเขาและการกด Delete จะเป็นการลบการโค่นล้ม 'pesky' ทั้งหมด


น่ารำคาญแน่นอน ;-) ฉันแค่ต้องทำความสะอาดและฉันจะนำมันกลับไปที่ที่เก็บใหม่
Brian Boatright

2
นี่เป็นวิธีที่ยอดเยี่ยมในการลบโฟลเดอร์นามสกุล frontpage ที่น่ารำคาญที่สุด!
Brian Boatright

ดาวน์โหลดและใช้ยูทิลิตี Everything Search เพื่อค้นหาและลบโฟลเดอร์. svn ด้วยความเร็วแสง :) voidtools.com Windows เท่านั้น!
endo64


21

ฉันพบว่าคุณไม่จำเป็นต้องคัดลอกไปยังตำแหน่งชั่วคราว คุณสามารถทำ

svn export --force .

และไฟล์. svn จะถูกลบในแหล่งกำเนิดโดยปล่อยให้ไฟล์อื่น ๆ สะดวกมากและไม่เสี่ยงต่อการรกรุงรัง


4
ฉันไม่รู้ว่ามันคืออะไร แต่มันก็ไม่ได้ผลสำหรับฉันด้วยเหตุผลบางอย่าง
ราศีเมษปกเกล้าเจ้าอยู่หัว

1
คำสั่งนี้ใช้ได้กับสำเนาที่ใช้งานได้เท่านั้นไม่ใช่โฟลเดอร์ที่อยู่ภายใน อาจแตกต่างจากเดิม ... ?

2
สิ่งนี้จะไม่ทำงานหาก Subversion รุ่นที่ติดตั้งคือ 1.7 และที่เก็บเป็น 1.6 อย่างไรก็ตาม "อัพเกรด svn" สามารถเรียกใช้ก่อนที่จะส่งออกและมันจะทำงาน
Peter Mortensen

11

ไม่มีเชลล์ใน Linux เพื่อลบ.svnโฟลเดอร์:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".

8

คำตอบเหล่านี้ไม่เป็นที่น่าพอใจสำหรับสถานการณ์ของฉัน ฉันใช้การ subversion 1.8 และฉันมีสำเนาที่ใช้งานได้ซึ่งมีเพียง.svnโฟลเดอร์เดียวที่โฟลเดอร์แรกสุดรูท อย่างไรก็ตามฉันต้องการลบบางสาขาออกจากสำเนาการทำงาน

ไม่ว่าฉันจะทำอะไรเมื่อใดก็ตามที่ฉันรัน 'อัปเดต' มันจะกู้คืนไฟล์เหล่านั้นและนำพวกเขากลับมาทั้งหมด ฉันไม่ต้องการลบออกจากพื้นที่เก็บข้อมูลเพียงแค่จากคอมพิวเตอร์ของฉัน - แต่ฉันต้องการเก็บสำเนาที่ใช้งานได้ส่วนที่เหลือไว้ในชั้นเชิง (ดังนั้นจึงไม่สามารถลบโฟลเดอร์. svn ออกได้)

สารละลาย? svn update --set-depth exclude <dir>

นี่คือ "การอัพเดต" ฝั่งไคลเอ็นต์ที่แยกไดเร็กทอรีเฉพาะ มันสามารถพบได้ในคู่มือที่svnbook.com ในระยะสั้นมันอธิบายสิ่งนี้เป็น:

เริ่มต้นด้วยการโค่นล้ม 1.6 คุณสามารถใช้แนวทางที่แตกต่าง ก่อนอื่นให้ตรวจสอบไดเรกทอรีเต็ม จากนั้นเรียกใช้การอัปเดต svn - การยกเว้นเชิงลึกในไดเรกทอรีย่อยเดียวที่คุณไม่สนใจ

สำหรับ TortoiseSVN คุณสามารถทำสิ่งเดียวกันได้ด้วยการคลิกขวาที่โฟลเดอร์ที่คุณไม่ต้องการคลิกที่Update to revision...แล้วตั้งค่า 'อัพเดตความลึก' Excludeเป็นตามที่เห็นในภาพหน้าจอนี้:

ป้อนคำอธิบายรูปภาพที่นี่


อย่างไรก็ตามคุณไม่สามารถลบโฟลเดอร์รากของสำเนาทำงานได้
JaBe

8

มันทำงานได้ดีสำหรับฉัน:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

นี่เป็นวิธีง่ายๆ แต่ก็ใช้งานได้เหมือนมีเสน่ห์
IgorGanapolsky

@IgorGanapolsky ฉันดีใจ ทางออกของฉันช่วยคุณ
Manikandan S

ตราบใดที่ไม่มีใครทำงานmkdir -p ';echo Hi Johnny;/.svn'- ในกรณีนี้การร้องขอการค้นหา {} ยังคงใช้ได้อยู่
อย่านอนอีกครั้ง

7

ใช้svn exportคำสั่ง:

cd c:\websites\test
svn export c:\websites\test_copy

ไฟล์ทั้งหมดภายใต้การควบคุมเวอร์ชันจะถูกส่งออก ตรวจสอบอีกครั้งเพื่อให้แน่ใจว่าคุณไม่ได้พลาดอะไรเลย


4

เพียงลบโฟลเดอร์. svn ที่อยู่ในโฟลเดอร์ที่ต้องการจากนั้นตัวควบคุมจะถูกลบโดยอัตโนมัติ


3

ใน Windows คุณสามารถเพิ่มลิงค์สำหรับเมนูคลิกขวาของ explorer เพียงแค่เริ่มต้นสคริปต์รีจิสทรีนี้:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

จะเป็นการเพิ่มรายการที่เรียกว่า "ลบ SVN Folders" ในเมนูคลิกขวาของคุณ นี่จะเป็นการลบโฟลเดอร์. svn ทั้งหมดในโฟลเดอร์นี้และโฟลเดอร์ย่อยทั้งหมด

แหล่งที่มา (ภาษาเยอรมัน): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/


2

คุณสามารถใช้ "svn export" เพื่อสร้างสำเนาของโฟลเดอร์นั้นโดยไม่มีข้อมูล svn หรือคุณสามารถเพิ่มโฟลเดอร์นั้นเพื่อเพิกเฉยได้


2

สำหรับผู้ที่ใช้ NetBeans กับ SVN มีตัวเลือก 'การโค่นล้ม> ส่งออก'


2

นอกจากนี้ยังมีเครื่องมือโอเพนซอร์สเล็ก ๆ ที่เรียกว่าSVN Cleanerซึ่งเพิ่มสามตัวเลือกในเมนูบริบทของ Windows Explorer:

  • ลบ. svn ทั้งหมด
  • ลบ All But Root .svn
  • ลบไฟล์ Repo ในเครื่อง

2

ใน Windows 7 หนึ่งสามารถเปิดโฟลเดอร์โครงการและทำการค้นหา ".svn" หากเปิดใช้งานไฟล์ที่ซ่อนอยู่และลบโฟลเดอร์. svn ที่พบทั้งหมด


1
Win Win XP ที่ใช้งานได้ดีเช่นกัน โปรดทราบว่าด้วย SVN 1.7 .svnไดเรกทอรีไม่มีอยู่กระจัดกระจายอีกต่อไป สำหรับรายละเอียดเพิ่มเติมดูที่subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Joao Coelho


1

คำตอบนั้นง่ายอย่างน่าประหลาดใจ - ส่งออกโฟลเดอร์ไปยังตัวมันเอง ! TortoiseSVN ตรวจจับกรณีพิเศษนี้และถามว่าคุณต้องการทำสำเนาการทำงานโดยไม่ขาดตอนหรือไม่ หากคุณตอบว่าใช่ไดเรคทอรี่ควบคุมจะถูกลบออกและคุณจะมีแผนผังไดเร็กทอรีแบบธรรมดาที่ไม่มีเวอร์ชัน


1
นี่ไม่ใช่แค่การอ้างคำตอบที่ได้รับเมื่อ 5 ปีที่แล้วหรือไม่
Ben Thurley


1

วิธีที่ดีที่สุดและง่ายที่สุด

หากคุณคิดว่าคุณสามารถชนะด้วยคำสั่งเวทมนต์ง่ายๆคุณจะล้มเหลว! SVN นั้นยุ่งยากและกลับมาเสมอด้วยข้อความแสดงข้อผิดพลาดใหม่ใน Xcode ไม่ช้าก็เร็วสัญญา ... ดังนั้นคุณต้องทำมันให้ฉลาด!

ดังที่คุณทราบตามปกติและวิธีปฏิบัติที่ดีที่สุดภายใต้ Xcode คือการลบไฟล์ในบานหน้าต่างโครงการทางด้านซ้าย หากคุณพลาดมันไปและลบมันใน Finder คุณกำลังมีปัญหา ปัญหาใหญ่! แต่คุณสามารถแก้มันและเวลาว่างถ้าคุณทำได้ดี

ก่อนอื่นคุณต้องลบการอ้างอิง SVN ไปยังไฟล์หรือโฟลเดอร์ก่อนที่จะลบได้จริง

  1. หากคุณสามารถนำไฟล์ / โฟลเดอร์กลับมาจากถังขยะหรือเลิกทำขั้นตอนสุดท้ายเมื่อคุณลบมันออกไป ...

  2. ไปที่ Terminal - ใช่อาคารเก่าที่ดี - แล้วไปที่สถานที่นั้น วิธีที่ดีที่สุดเพียงพิมพ์cdจากนั้นดึงโฟลเดอร์ / ไฟล์ไปที่ Terminal คุณจะได้รับสิ่งที่คล้ายกัน

cd / ผู้ใช้ / ชื่อผู้ใช้ / เอกสาร / Apps_Developing / ...

คุณสามารถตรวจสอบว่าคุณอยู่ที่ไหนด้วย

LS

คำสั่งที่รายการไฟล์ของคุณ

  1. จากนั้นคุณต้องลบการอ้างอิง svn ด้วยคำสั่ง SVN:

    svn delete --keep-local fileName_toDelete

นี่จะเป็นการลบไฟล์ออกจากที่เก็บ SVN แต่คุณจะต้องลบมันเองใน Finder


0

ฉันใช้ rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

0

ผู้ใช้ NetBeans IDE สามารถทำได้ดังนี้:

  1. เปิดโครงการ SVN ใน IDE ของคุณ
  2. เลือกโครงการ

    คลิกขวาที่การโค่นล้มการส่งออก

  3. ในกล่องโต้ตอบ

    ส่งออกไปยังโฟลเดอร์ / var / tmp / projectname กดส่งออกรอจะแสดงเสร็จสมบูรณ์จะถามว่าคุณต้องการที่จะเปิดมันจะเปิดได้ทันที

  4. ตอนนี้คุณสามารถเปลี่ยนเป็น Git ได้ :)


0

ความคิดของฉันคือการลบโฟลเดอร์. svn แล้วย้ายไฟล์อื่นทั้งหมดไปยังโฟลเดอร์ใหม่ มันเป็นเรื่องง่ายเหมือนที่.


0

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


0

svn export ทำงานได้ดี แต่ฉันคิดว่านี่คือ:

svn rm --keep-local <folder/file>

มันลบมันออกจากพื้นที่เก็บข้อมูลในท้องถิ่นของคุณ


0

ในฐานะที่เป็นจุดสำคัญเมื่อคุณใช้เชลล์เพื่อลบโฟลเดอร์. svn คุณต้องมีอาร์กิวเมนต์-depthเพื่อป้องกันคำสั่งfindเข้าสู่ไดเรกทอรีที่เพิ่งถูกลบและแสดงข้อความผิดพลาดเช่น

"find: ./.svn: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว"

ดังนั้นคุณสามารถใช้findคำสั่งด้านล่าง:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;


0

ใช้สิ่งต่อไปนี้:

svn rm --keep-local <folder name> เพื่อลบโฟลเดอร์และทุกอย่างที่อยู่ภายใน

svn rm --keep-local <folder name>/* เพื่อเก็บโฟลเดอร์ แต่ลบทุกอย่างภายในโฟลเดอร์

นี่คือตัวอย่างของสิ่งที่เกิดขึ้น:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json

-1

บน Windows 10 เราต้องไปWindows Explorerแล้วไปและตรวจสอบช่องทำเครื่องหมายViewView hidden files

จากนั้นนำทางไปยังโฟลเดอร์ที่มี SVN เชื่อมโยงกับ Windows Explorer และลบ.svnโฟลเดอร์ / ไฟล์


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