Làm thế nào để bạn loại bỏ kiểm soát Subversion cho một thư mục?


259

Tôi có một thư mục, c:\websites\testvà nó chứa các thư mục và tệp được kiểm tra từ kho lưu trữ không còn tồn tại. Làm cách nào để Subversion dừng theo dõi thư mục đó và bất kỳ thư mục con và tệp nào?

Tôi biết tôi chỉ có thể xóa .svnthư mục, nhưng có rất nhiều thư mục con trong nhiều lớp.


1
Nếu bạn đang sử dụng TortioseSVN, tôi đã viết một bài đăng trên blog cho thấy cách nhanh nhất để làm điều này. Bài viết của tôi có hướng dẫn từng bước với hình ảnh. Bài đăng đó có sẵn tại http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell

Tham khảo câu trả lời của tôi đã giúp nhiều. stackoverflow.com/questions/4889619/
hy

Câu trả lời:


258

Ngoài ra, nếu bạn đang sử dụng TortoiseSVN, chỉ cần xuất sang vị trí sao chép làm việc hiện tại và nó sẽ xóa các thư mục và tệp .svn.

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

Câu trả lời cập nhật cho Subversion 1.7:
Trong Subversion 1.7, bản sao làm việc đã được sửa đổi rộng rãi. Chỉ có một thư mục .svn, nằm trong cơ sở của bản sao làm việc. Nếu bạn đang sử dụng 1.7, thì chỉ cần xóa thư mục .svn và nội dung của nó là một giải pháp dễ dàng (bất kể sử dụng TortoiseSVN hoặc các công cụ dòng lệnh).


8
Liên kết bây giờ là 404. Liên kết mới: tortoisesvn.net/docs/release/TortoirSVN_en/, Xuất khẩu quá dòng dường như chỉ là một trường hợp đặc biệt chỉ xóa các tệp .svn nếu bạn nói cũng giữ các tệp không bị đảo ngược.
lilbyrdie

sau khi xóa thành công để lấy lại biểu tượng thư mục của bạn, hãy khởi động lại máy chủ svn một cách bình thường và đó là tất cả
3ehrang 27/212

Máy chủ sẽ không liên quan gì đến các biểu tượng thư mục Rùa. Nhưng nếu họ không cập nhật, bạn có thể thử giết tiến trình TSVNCache. Nó sẽ tự động khởi động lại.
crashmstr

1
Trong trường hợp của tôi, tôi đã xóa thư mục git cùng với thư mục .svn
Aftab Ahmed Kalhoro 23/07/18

155

Trên Linux, điều này sẽ hoạt động:

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

10
Hoạt động trên Mac OS cũng vậy.
xuất hiện vào

2
trước khi chạy lệnh, hãy chắc chắn nhập thư mục thích hợp, ví dụ: cd mySVNdirectoryWhereToRemoveTheSubprinters
Camaleo

Tôi nhận được rm: operand mất tích
Mùa đông

119

Hãy thử xuất svn .

Bạn sẽ có thể làm một cái gì đó như thế này:

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

Và sau đó chỉ cần xóa các bản sao làm việc cũ.

TortoiseSVN cũng có một tính năng xuất , hoạt động theo cách tương tự.


4
Cảm ơn đã cung cấp một câu trả lời hoạt động với dòng lệnh. :) Tuyệt vời cho những người trong chúng ta sử dụng thiết bị đầu cuối.
epochwolf

16
Nếu tôi hiểu chính xác, lệnh này sẽ chỉ xuất các tệp hiện đang được kiểm soát lật đổ. Vì vậy, nếu một số tệp hoặc thư mục chưa được thêm nhất định vào lật đổ hoặc bị xóa khỏi kiểm soát lật đổ, bạn sẽ mất các tệp này trong bản xuất của mình ...
Chris

@Chris, vâng, bạn đúng. Điều này sẽ chỉ xuất các tập tin phiên bản. Điều này tốt cho việc xuất mã và để lại các tạo phẩm có nguồn gốc, v.v., nhưng nó có thể không phải là công cụ phù hợp cho mọi công việc.
pkaeding

4
Đáng để nhận xét rằng DOES này vẫn hoạt động nếu máy chủ SVN không còn hoạt động; nếu bạn cố gắng xuất bằng VisualSVN hoặc Rùa SVN, có vẻ như cố gắng liên hệ với máy chủ, nhưng phiên bản dòng lệnh ở trên hoạt động với tôi mà không có máy chủ SVN vẫn chạy.
Dave

Tôi gặp lỗi:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky

32

Nếu bạn đang chạy Windows thì bạn có thể thực hiện tìm kiếm trên thư mục .svnđó và sẽ liệt kê tất cả. Nhấn Ctrl+ Asẽ chọn tất cả chúng và nhấn xóa sẽ xóa tất cả các công cụ Subversion 'pesky'.


pesky thực sự ;-) Tôi chỉ cần làm sạch nó và tôi sẽ đưa nó trở lại một kho lưu trữ mới.
Brian Boatright

2
đó cũng là một cách TUYỆT VỜI để xóa các thư mục tiện ích mở rộng thậm chí phiền phức nhất!
Brian Boatright

Tải xuống và sử dụng tiện ích Tìm kiếm mọi thứ để tìm và xóa các thư mục .svn ở tốc độ nhẹ :) voidtools.com Chỉ dành cho Windows!
endo64


21

Tôi thấy rằng bạn thậm chí không cần phải sao chép vào một vị trí tạm thời. Bạn có thể làm một

svn export --force .

và các tệp .svn sẽ bị xóa tại chỗ , để lại các tệp khác. Rất thuận tiện và ít bị lộn xộn.


4
Tôi không biết nó là gì, nhưng nó không hoạt động với tôi vì một số lý do.
Bạch Dương VII

1
Lệnh này chỉ hoạt động cho bản sao làm việc, không phải là một thư mục bên trong nó. Có lẽ một biến thể của cùng một ...?

2
Điều này sẽ không hoạt động nếu phiên bản Subversion được cài đặt là 1.7 và kho lưu trữ là 1.6. Tuy nhiên, "nâng cấp svn" có thể được chạy trước khi xuất và nó sẽ hoạt động.
Peter Mortensen

11

Không có subshells trong Linux để xóa .svncác thư mục:

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

Không có câu trả lời nào là thỏa đáng cho tình huống của tôi. Tôi đang sử dụng subversion 1.8 và tôi đã có một bản sao hoạt động chỉ có một .svnthư mục duy nhất tại thư mục đầu tiên, root. Tuy nhiên, tôi muốn loại bỏ một số chi nhánh khỏi bản sao làm việc.

Bất kể tôi đã làm gì, bất cứ khi nào tôi chạy 'cập nhật', nó sẽ khôi phục các tệp đó và đưa tất cả chúng trở lại. Tôi không muốn xóa chúng khỏi kho lưu trữ, chỉ từ máy tính của mình - nhưng tôi cần giữ phần còn lại của bản sao hoạt động (do đó không thể xóa thư mục .svn).

Giải pháp? svn update --set-depth exclude <dir>

Đây là một "cập nhật" phía máy khách không bao gồm một thư mục cụ thể. Nó có thể được tìm thấy trong các hướng dẫn tại svnbook.com . Nói tóm lại, nó mô tả điều này như:

Bắt đầu với Subversion 1.6, bạn có thể thực hiện một cách tiếp cận khác. Đầu tiên, hãy kiểm tra thư mục đầy đủ. Sau đó chạy cập nhật svn - loại trừ độ sâu trên một thư mục con mà bạn không quan tâm.

Đối với TortoiseSVN, bạn cũng có thể thực hiện điều tương tự bằng cách nhấp chuột phải vào thư mục bạn không muốn, nhấp vào Update to revision...và sau đó đặt 'Cập nhật độ sâu' thành Exclude, như đã thấy trong ảnh chụp màn hình này:

nhập mô tả hình ảnh ở đây


Bạn không thể loại bỏ các thư mục gốc sao chép làm việc, mặc dù.
JaBe

8

Nó hoạt động tốt với tôi:

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

Đây là một giải pháp đơn giản, nhưng hoạt động như một nét duyên dáng.
IgorGanapolsky

@IgorGanapolsky Tôi rất vui. Giải pháp của tôi là giúp bạn.
Manikandan S

miễn là không có ai chạy mkdir -p ';echo Hi Johnny;/.svn'- trong trường hợp đó, lệnh gọi {} tìm kiếm vẫn hoạt động
Không bao giờ ngủ lại

7

Sử dụng svn exportlệnh:

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

Tất cả các tệp dưới sự kiểm soát phiên bản sẽ được xuất. Kiểm tra kỹ để đảm bảo bạn không bỏ lỡ bất cứ điều gì.


4

Chỉ cần xóa thư mục .svn bên trong thư mục yêu cầu thì điều khiển sẽ tự động bị xóa.


3

Trên Windows, bạn có thể thêm một liên kết nhanh cho điều đó vào trình đơn nhấp chuột phải của bạn. Chỉ cần bắt đầu tập lệnh đăng ký này:

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\" \""

Thao tác này sẽ thêm một mục có tên "Xóa thư mục SVN" vào menu nhấp chuột phải của bạn. Điều này sẽ xóa tất cả các thư mục .svn trong thư mục này và tất cả các thư mục con.

Nguồn (tiếng Đức): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/


2

Bạn có thể sử dụng "svn export" để tạo một bản sao của thư mục đó mà không có dữ liệu svn hoặc bạn có thể thêm thư mục đó để bỏ qua danh sách


2

Đối với những người sử dụng NetBeans với SVN, có một tùy chọn 'Subversion> Xuất'.


2

Ngoài ra còn có một công cụ mã nguồn mở nhỏ xinh gọi là SVN Cleaner , bổ sung ba tùy chọn vào Menu ngữ cảnh Windows Explorer:

  • Xóa tất cả .svn
  • Xóa tất cả nhưng root .svn
  • Xóa tệp Repo cục bộ

2

Trên Windows 7, người ta chỉ cần mở thư mục dự án và thực hiện tìm kiếm ".svn" nếu các tệp ẩn được bật và xóa tất cả các thư mục .svn được tìm thấy.


1
Win Win XP cũng hoạt động rất tốt. Lưu ý rằng với SVN 1.7, các .svnthư mục không còn tồn tại rải rác xung quanh. Để biết thêm chi tiết, hãy xem subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Joao Coelho


1

Câu trả lời rất đơn giản - xuất thư mục vào chính nó ! TortoiseSVN phát hiện trường hợp đặc biệt này và hỏi bạn có muốn làm cho bản sao làm việc không bị đảo ngược. Nếu bạn trả lời có, các thư mục điều khiển sẽ bị xóa và bạn sẽ có một cây thư mục đơn giản, không đảo ngược.


1
Đây không phải là chỉ trích dẫn lại câu trả lời được chấp nhận đưa ra 5 năm trước sao?
Ben Thurley

1

Một giải pháp Linux khác (đơn giản hơn):

rm -r `find /path/to/foo -name .svn`

1

CÁCH TỐT NHẤT VÀ DỄ DÀNG NHẤT

Nếu bạn nghĩ rằng bạn có thể giành chiến thắng với một lệnh ma thuật đơn giản, bạn đã thất bại! SVN thực sự rất khó và luôn quay trở lại bằng cách nào đó với thông báo lỗi mới trong Xcode. Sớm hay muộn, hứa ... vì vậy bạn phải làm điều đó thật thông minh!

Như bạn đã biết cách thực hành thường xuyên và tốt nhất trong Xcode là xóa một tệp trên khung dự án bên trái. Nếu bạn bỏ lỡ nó và bằng cách nào đó đã xóa nó trong Finder bạn đang gặp rắc rối. Rắc rối lớn! Nhưng bạn có thể giải quyết nó và thời gian rảnh nếu bạn làm tốt.

Trước tiên, bạn cần xóa tham chiếu SVN vào tệp hoặc thư mục trước khi bạn có thể xóa nó thực sự

  1. Nếu bạn chỉ có thể đặt lại tệp / thư mục từ thùng rác hoặc hoàn tác bước cuối cùng khi bạn xóa nó, thì ...

  2. Đi đến Terminal - vâng, thiết bị đầu cuối cũ tốt - và đi đến vị trí đó. Cách tốt nhất chỉ cần gõ cd sau đó kéo thư mục / tệp vào Terminal. Bạn sẽ nhận được một cái gì đó tương tự

cd / Users / UserName / Documents / Apps_Developing / ...

Bạn có thể kiểm tra xem bạn đang ở đâu với

ls

lệnh liệt kê các tập tin của bạn.

  1. Sau đó, bạn cần xóa tham chiếu svn bằng lệnh SVN:

    svn xóa --keep-local fileName_toDelete

Thao tác này sẽ xóa tệp khỏi kho SVN, NHƯNG bạn phải xóa thủ công trong Finder.


0

Tôi sử dụng rsync:

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

0

Người dùng NetBeans IDE có thể làm như dưới đây:

  1. Mở dự án SVN trong IDE của bạn
  2. Chọn dự án

    nhấp chuột phải vào Subversion Xuất

  3. Trong hộp thoại

    xuất vào thư mục / var / tmp / tên dự án, nhấn xuất sẽ chờ hoàn tất sẽ hỏi bạn có muốn mở không, hãy mở khi đang di chuyển

  4. Bây giờ bạn có thể chuyển sang Git :)


0

Ý tưởng của tôi là xóa thư mục .svn và sau đó di chuyển tất cả các tệp khác sang thư mục mới. Nó đơn giản như vậy.


0

Khi bạn đang sử dụng HĐH Windows, hãy chuyển đến vị trí thư mục của bạn và kiểm tra các tệp ẩn đang mở và sau đó bạn có thể thấy thư mục SVN trong đó. Chỉ cần loại bỏ thư mục đó.


0

svn export hoạt động tốt, nhưng tôi nghĩ rằng đây là:

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

Nó loại bỏ nó khỏi kho lưu trữ cục bộ của bạn.


0

Là một điểm quan trọng, khi bạn sử dụng shell để xóa các thư mục .svn, bạn cần đối số -depth để ngăn lệnh find đi vào thư mục vừa bị xóa và hiển thị các thông báo lỗi như vd

"find: ./.svn: Không có tệp hoặc thư mục như vậy"

Do đó, bạn có thể sử dụng findlệnh như dưới đây:

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


0

Sử dụng như sau:

svn rm --keep-local <folder name> để loại bỏ thư mục và mọi thứ trong đó.

svn rm --keep-local <folder name>/* để giữ thư mục, nhưng loại bỏ mọi thứ trong thư mục.

Đây là một ví dụ về những gì xảy ra:

~/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

Trên Windows 10, chúng ta cần truy cập Windows Explorervà sau đó đi đến Viewvà kiểm tra hộp kiểm cho View hidden files.

Sau đó điều hướng đến thư mục có SVN được liên kết trên Windows Explorer và xóa .svnthư mục / tệp.


Mặc dù tôi đã chỉnh sửa định dạng, câu trả lời này không thực sự trả lời câu hỏi. Người dùng đã biết cách xóa .svnthư mục cơ sở , nhưng anh ta đang hỏi về tất cả các thư mục con. Xin vui lòng đọc kỹ câu hỏi.
CodeMouse92
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.