2011-02-03 27 views
72

Tôi có một thư mục có nhiều thư mục con. Trong mỗi thư mục có một thư mục subversion (.svn).Lệnh để đệ quy xóa tất cả thư mục .svn trên Windows

Có lệnh nào trong cửa sổ sẽ đi qua từng thư mục và thư mục con và xóa thư mục .svn không?

Hoặc tôi có phải tạo tập lệnh hoặc thực hiện thủ công không?

+4

Nếu không được viết kịch bản, tôi chỉ tìm kiếm ".svn" trong thư mục gốc, sau đó chọn tất cả kết quả và xóa. –

+1

Bạn cũng có thể quan tâm đến lệnh xuất khẩu svn (http://svnbook.red-bean.com/en/1.0/re10.html), sao chép một thư mục đến một vị trí khác, nhưng không có tất cả thư mục .svn. –

+0

@JB Nizet: Bạn nên tạo câu trả lời để mọi người có thể bỏ phiếu, thay vì thêm nhận xét. Nhận xét dành cho nhận xét về câu hỏi, ví dụ: khi một số nội dung không rõ ràng của –

Trả lời

28

Sử dụng lệnh svn export để xuất bản sao làm việc Subversion thành cấu trúc thư mục "sạch" mới không có thư mục .svn.

+4

Đây có thể không phải là những gì anh ấy đang tìm kiếm. Tôi muốn điều tương tự vì vậy tôi có thể kiểm tra trong một số mã đã được sửa đổi vào một vị trí SVN khác. –

+0

bạn có thể làm điều đó sau khi một 'svn export' –

+0

Điều này làm việc cho tôi. Tôi đã sử dụng xuất khẩu svn [RepoPath] [NewPath] – user489041

45

Thực hiện việc này trong PowerShell.

LƯU Ý: Đây là đệ quy để đảm bảo bạn đang ở đúng thư mục!

gci -fil '.svn' -r -force | ri -r -force 

Đây là phần còn lại của tập lệnh dọn dẹp nguồn gốc của tôi.

gci -fil 'bin' -r -force | ri -r -force 
gci -fil 'obj' -r -force | ri -r -force 
gci -fil '_ReSharper*' -r -force | ri -r -force 
gci -fil '*.suo' -r -force | ri -r -force 
gci -fil '*.user' -r -force | ri -r -force 
+0

Lưu ý: Nếu bạn có Đường dẫn có hơn 260 ký tự, bạn sẽ nhận được một RemoveItem PathTooLongException. – bluelDe

156

Tạo một tệp lô litte với dòng sau và thực hiện nó từ thư mục mẹ có thư mục .svn.

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G" 

Bạn cũng có thể phát hành các dòng dưới đây thẳng từ Command Prompt:

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G" 
+1

Cảm ơn rất nhiều. thats những gì tôi chính xác muốn. tôi bị ngắt kết nối từ kho svn của tôi vì lý do nào đó và không có thời gian để tạo R & D vì lý do này. bây giờ tôi sử dụng Filezilla để tải lên dự án đầy đủ mà không cần bất kỳ thư mục .svn nào với lệnh này. một lần nữa cảm ơn –

+0

Cảm ơn vì điều này. Được đánh giá cao. Tôi đã được đưa ra một cây thư mục với .svn nhưng không thực sự sử dụng nó. Tìm kiếm trong Win cho .svn (bất kể hiển thị các tập tin ẩn hoặc tắt) trả lại kết quả bằng không. Các dấu nhắc dòng lệnh đã làm các trick! –

+1

Tất cả các upvotes cho bạn thưa ông –

9

Nếu bạn muốn xóa tất cả các thư mục phụ có tên svn trong cửa sổ sau đó tạo ra tập tin thực thi với nội dung này :

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i" 
) 

tiết kiệm nó trong một tập tin del_All_Dot_SVN_Folders.cmd. Chạy nó đi. Bạn đã hoàn tất.

Nhờ http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

Hãy nhớ rằng các mã trên đã .svn trong khi các mã trong các liên kết đã chỉ * svn để nó tốt hơn để có svn để không vô tình có hiệu lực thi hành không mong muốn.

8

Chỉ cần nhập .svn vào hộp tìm kiếm của File Explorer, sau đó chọn và xóa tất cả kết quả tìm kiếm (xem nhận xét của JB Nizet). Tất nhiên, phương pháp này cũng có thể được sử dụng để xóa nhanh các thư mục obj và bin, ví dụ: khi tổ chức lưu trữ svn. Mặc dù OP đã yêu cầu một giải pháp dòng lệnh, ông cũng chỉ định sử dụng Windows và được coi là xóa thủ công, vì vậy phương pháp File Explorer vẫn có thể được xem xét, đặc biệt là vì nó là phương pháp nhanh nhất và không dựa vào 'công cụ' svn xuất khẩu.

Mặc dù OP đã chọn câu trả lời được chấp nhận, câu trả lời này vẫn có thể hữu ích cho người khác. Ít nhất đó là hữu ích cho tôi, một thời gian dài linux/windows người dùng thích dòng lệnh và lần đầu tiên biết về hộp tìm kiếm qua đường bưu điện này :-)

explorer screenshot with searchbox

-1

Như một điểm quan trọng, nếu bạn muốn chạy vỏ để xóa.thư mục svn, bạn có thể cần đối số -depth để ngăn lệnh tìm nhập vào thư mục vừa bị xóa và hiển thị thông báo lỗi ngớ ngẩn như ví dụ:

"find: ./.svn: No such file or directory" 

Để thoát khỏi lỗi này, bạn có thể sử dụng lệnh find như sau:

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

Tôi biết nó quá muộn để trả lời điều này, nhưng tôi đoán đó là một cách dễ dàng nếu có nhật thực toàn phần và plugin svn được cài đặt trên nhật thực của bạn. Nhấp chuột phải vào dự án, vào Team-> disconnect. Nó sẽ mở cửa sổ bật lên nơi bạn chọn tùy chọn đầu tiên: 'Đồng thời xóa siêu thông tin SVN khỏi hệ thống tệp'. Điều này sẽ loại bỏ tất cả các thư mục SVN tự động cùng với các tập tin thuộc tính svn mà bạn có thể quên đôi khi trong khi loại bỏ thư mục .svn chỉ!

Các vấn đề liên quan