2009-08-05 6 views
46

Tôi không phải là mới đối với Subversion, nhưng tôi đã cho đến bây giờ được sử dụng Tortoise và không bao giờ là dòng commadn. Câu hỏi của tôi là, làm cách nào để bỏ qua tất cả các tệp như * .o từ nguồn TOÀN BỘ không chỉ gốc.Đệ quy bỏ qua các tệp trong toàn bộ cây nguồn trong lật đổ

Ví dụ, nếu tôi có các tập tin sau đây: /myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o

Nếu svn propedit svn: ignore "." trong thư mục gốc, và thêm * .o, nó sẽ bỏ qua myfile.o, nhưng không bỏ qua /folder1/myfile2.o, /folder1/folder1.1/myfile3.o, /folder2/myfile4.o. Có cách nào để thêm * .o vào cho toàn bộ dự án (tôi không thể làm điều đó cho toàn bộ kho lưu trữ, mà tôi biết có thể được thực hiện, bởi vì dự án này nằm trong kho lưu trữ với nhiều dự án khác)?

Vui lòng cho tôi biết nếu tôi cần làm rõ. Cảm ơn!

Trả lời

63

Sửa

Câu trả lời ban đầu được cung cấp dưới đây đã được đưa ra trước khi v1.8 Subversion trong đó giới thiệu một cách để thiết lập mức độ kho mặc định bỏ qua (gọi tắt là svn:global-ignores) mà không trọng/thay thế svn:ignore tài sản trên thư mục gốc và mọi thư mục con duy nhất. Từ 1.8, cách tốt nhất để đạt được những gì bạn muốn là để gọi lệnh sau (tín dụng đi vào TManhente):

svn propset svn:global-ignores '*.o' . 

Trong các phiên bản trước đó (và trên các phiên bản mới hơn), bạn vẫn có thể sử dụng phương pháp đã nêu trong câu trả lời ban đầu dưới đây; tuy nhiên, hãy lưu ý rằng điều này giả định rằng bạn có thể thay thế/ghi đè thuộc tính svn:ignore trên mỗi thư mục con ... điều này có thể tốt cho kho lưu trữ nhỏ/mới nhưng có lẽ không phải là thứ bạn muốn nếu bạn có/cũ kho lưu trữ trong đó một số thư mục con có thể có độc lập svn:ignore thuộc tính mà bạn không muốn ghi đè.

Original câu trả lời

Bạn có thể sử dụng "-R" hoặc tùy chọn "--recursive" với "svn propset" như trong các lệnh sau:

 
svn propset svn:ignore '*.o' . --recursive 

Thông tin thêm

Đối với cả hai trường hợp, bạn có thể sử dụng lệnh sau để biết thêm thông tin về đạo cụ svn:

 
svn help propset 
+0

Cảm ơn, điều đó đã hiệu quả! Tôi vẫn nhận được tài liệu của họ. Như tôi đã nói, tôi có, cho đến bây giờ, chỉ sử dụng rùa và cung cấp cho bạn hộp thoại đẹp và giải thích :). – alanquillin

+1

bạn cũng có --force 'svn propset svn: ignore" * .pdb * .db "c: \ portal \ --recursive --force' –

+43

Câu trả lời được chấp nhận sẽ xóa sạch tất cả các cài đặt svn: ignore khác nếu bạn có chúng. sau đó bạn có thể muốn http://stackoverflow.com/questions/3086418/svn-revert-all-properties-changes –

38

Chỉ cần cập nhật: Subversion 1.8.0 giới thiệu Các thuộc tính kế thừaCấu hình được chỉ định lưu trữ (Đối với đạo cụ tự động và bỏ qua), cũng có thể được sử dụng trong trường hợp này.

Bạn có thể đặt thuộc tính svn:global-ignores mới trong đường dẫn gốc. Nó sẽ "chỉ có hiệu lực các subtrees bắt nguồn từ đường dẫn trên đó các tài sản được thiết lập".

tài sản mới này được thiết lập giống như svn:ignore:

svn propset svn:global-ignores '*.o' . 

Xem thêm thông tin có sẵn tại Subversion 1.8.0 Release Notes.

+0

Tôi thực sự muốn biết làm thế nào để thiết lập nó bằng cách sử dụng tự động-đạo cụ? – mgouin

3

Theo chỉ dẫn của @ hackmaster.a trong một nhận xét, ví dụ được đưa ra trong câu trả lời được chấp nhận có tác dụng phụ của việc xóa tất cả các cài đặt trước đó svn:ignore. Sử dụng propedit thay vì propset không hoạt động.

Cách đúng để thêm nhiều file một cách đệ quy được đặt tên của họ trong danh sách được phân cách bởi dòng mới trong tập svn:ignore tài sản với svn propset svn:ignore "[LIST]" .

Ví dụ:

svn propset svn:ignore -R "*.pkl 
    > *.class 
    > Thumbs.db 
    > data.tmp" . 

Tất nhiên > 's chỉ là lời nhắc shell.

Lệnh này sẽ thay đổi thuộc tính svn:ignore của thư mục hiện tại và mỗi thư mục con của nó một cách đệ quy.

+0

Sử dụng 1.7.4 hết tất cả các svn: ignore – lrkwz

+0

Cảm ơn. Nó hoạt động với svn, phiên bản 1.8.10. –