2009-09-21 33 views
11

Tôi đang cố gắng thêm một hạt nhân Linux vào một cây SVN, trong đó có một thư mục con .git - mà tôi không muốn thêm vào.Tại sao 'svn ignore' không bỏ qua?

Bất cứ ai có thể giải thích hành vi này - tại sao KHÔNG bỏ qua thư mục .git?

test2$ mkdir -p a/.git/blah 
test2$ ls 
a 
test2$ svn propset svn:ignore .git . 
property 'svn:ignore' set on '.' 
test2$ svn propset -R svn:ignore .git . 
property 'svn:ignore' set (recursively) on '.' 
test2$ svn add a 
A   a 
A   a/.git 
A   a/.git/blah 

Trả lời

7

Các svn propset đầu tiên đặt svn:ignore tài sản trên mẹ thư mục của a.

Thứ hai svn propset không làm gì cả, vì a chưa được quản lý SVN.

17

Thuộc tính svn:ignore trên thư mục liệt kê các tên trong thư mục hiện tại sẽ bị bỏ qua. Bạn đã đặt thuộc tính svn:ignore trong thư mục hiện tại của mình thành .git, nhưng điều đó không áp dụng cho thư mục con a. Những gì bạn có thể làm là trước hết phải thêm a không đệ quy:

svn add -N a 
svn ci -m "add a directory" 

Sau đó thiết lập các svn:ignore tài sản:

svn propset svn:ignore .git a 

và sau đó thêm cây của bạn:

svn add a 

này nên bỏ qua a/.git danh mục.

+1

Lệnh 'commit' sau khi 'add' là không thực sự cần thiết. Có thể thêm thuộc tính vào thư mục được theo dõi trong bản sao làm việc nhưng chưa được cam kết. –

5

Thuộc tính svn:ignore là để bỏ qua các tệp trong các thư mục đã thêm.

Đối tránh việc nhập khẩu các tập tin (hoặc thư mục), bạn nên sử dụng toàn cầu bỏ qua -feature, đó là cấu hình trong tập tin ~/.svn/config (UNIX) hoặc %APPDATA%\Subversion\config (Windows) trong phần [sưu].

Kích hoạt nó bằng cách loại bỏ các # ở phía trước của dòng:

global-ignores = .git 
+1

Vấn đề với toàn cầu bỏ qua là người tiếp theo sử dụng repo là * không * sẽ bỏ qua những thứ bạn muốn tránh nhìn thấy trong repo. – Coderer

+0

cho điều này bạn có thể sử dụng một móc trước cam kết với một tập tin bỏ qua toàn cầu buộc –

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