2010-02-05 32 views
33

Làm cách nào để xóa tất cả các tệp Subversion khỏi một thư mục bằng PowerShell?Cách xóa đệ quy tất cả các tệp SVN bằng PowerShell

+7

có lẽ điều này không áp dụng được, nhưng có thể tạo bản sao mã của bạn từ kho lưu trữ của bạn mà không có hiện vật lật đổ hiện tại. ví dụ. bằng cách sử dụng TortoiseSVN, bạn có thể sử dụng 'SVN xuất khẩu' –

Trả lời

41

Nếu bạn thực sự muốn chỉ cần xóa các thư mục svn, điều này có thể giúp:

gci c:\yourdirectory -include .svn -Recurse -Force | 
    Remove-Item -Recurse -Force 

Chỉnh sửa: Đã thêm -Force tham chiếu đến gci để liệt kê các thư mục ẩn và rút ngắn mã.

Keith đúng là bạn cần phải tránh xóa tệp bằng phần mở rộng .svn, bạn nên lọc các mục bằng cách sử dụng ?.

+0

là có một lý do tại sao chúng tôi không thể đệ quy loại trừ các tệp svn trong khi sao chép? Tôi đã thử Nguồn bản sao $ -Giá trị $ dest -Recurse -Exclude '.svn'. Nhưng điều đó không thành công. Vì vậy, tôi sao chép nó hoàn toàn và sau đó loại bỏ các tập tin .svn đệ quy bằng cách sử dụng lệnh này. – gprasant

+0

Nó không hoạt động. Tôi đoán nó là trường hợp tương tự như nếu bạn sử dụng 'Get-ChildItem dir -recurse -exludlude ..'. '-exclude' (và như tôi nhớ chính xác cũng' -include') không chơi tốt với '-recurse'. – stej

+0

Hoạt động hoàn hảo cho tôi. Cảm ơn –

10

Giả sử bạn không muốn xóa bất kỳ tập tin mà còn có thể mở rộng .svn:

Get-ChildItem $path -r -include .svn -Force | Where {$_.PSIsContainer} | 
    Remove-Item -r -force 

Microsoft đã đáp lại đề nghị trong các ý kiến ​​dưới đây mà Keith khai trương vào MS Connect! Tính đến PowerShell V3 bạn có thể loại bỏ các phụ (rất chậm) ống để Where {$_.PSIsContainer} và sử dụng -directory thay vì:

gci $path -r -include .svn -force -directory | Remove-Item -r -force 

PowerShell v3 có thể được tải về cho Windows 7   tại Windows Management Framework 3.0.

+0

Có, tốt bắt :) Tuy nhiên, tôi không giả sử có một số tập tin với phần mở rộng này. – stej

+0

Tôi chưa bao giờ sử dụng Subversion (chỉ ClearCase & TFS) nên tôi không chắc chắn. –

+2

BTW Tôi mong đợi ngày bạn không cần 'Where {$ _. PSIsContainer}' và tất cả những gì bạn phải làm là 'gci. -r -containerOnly'. Tôi có Get-ChildItem của tôi proxied để làm việc theo cách này nhưng tôi không thể đếm trên folks khác có nó. :-( –

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