2010-11-05 28 views
8

Tôi đang sử dụng svn add * để thêm tệp vào svn và thêm tệp cấu hình được thêm vào để bỏ qua."svn add *" thêm ngay cả những tệp bị bỏ qua

[email protected]:/workspace/project$ svn propget svn:ignore 
.sass-cache 
config.js 

Điều gì có thể gây ra sự cố?

+4

Vấn đề cuối cùng đã không được giải quyết và tôi đã thuyết phục nhóm của tôi chuyển sang git. Rất vui về điều đó! – lyuba

Trả lời

0

Bạn đã thử cam kết config.js để xem nó có thực sự bị bỏ qua không? Tôi nghĩ rằng nếu bạn đặc biệt nói với svn để thêm một tập tin để kiểm soát phiên bản, nó sẽ qua đi xe bỏ qua.

+0

Cố gắng cam kết không phải là cách để tìm hiểu btw, nếu nó được thêm vào nó sẽ được cam kết. svn: ignore là để ngăn chặn nó được thêm vào. –

10

Trong UNIX và Linux, nếu bạn nói

svn add * 

Sau đó, vỏ sẽ mở rộng tất cả các file trong thư mục và chương trình sẽ thấy giống như nếu bạn đã gõ

svn add file-a.txt file-b.txt file-c.txt 

vv Điều này có nghĩa là lệnh Subversion nghĩ rằng bạn đã liệt kê rõ ràng tệp để thêm. Trong trường hợp này, nó sẽ thêm nó, mặc dù thuộc tính svn:ignore có thể được đặt.

Từ documentation of svn:ignore (tôi nhấn mạnh):

Subversion sử dụng các mô hình bỏ qua để xác định các tập tin không nên bị cuốn vào hệ thống kiểm soát phiên bản như một phần của một lớn hơn đệ quy Ngoài hoạt động hoặc nhập khẩu.

+1

Làm thế nào tôi có thể làm cho svn thêm tất cả các tập tin, tạo ra gần đây, và giữ bỏ qua đồng thời? – lyuba

+3

'svn add. --depth infinity' –

+1

Nếu tôi đã thêm một số tệp, không nằm trong., nhưng thay vào đó, ví dụ, scss/pages/_comparison.scss, thì lệnh bạn đề xuất không thêm chúng. Thay vào đó nó nói svn: warning: '.' đã được kiểm soát phiên bản – lyuba

1

Tôi thấy rằng this question chứa một giải pháp rất tốt. Vì câu trả lời không thực sự trả lời câu hỏi, tôi không nghĩ rằng nó là trùng lặp. Trong sử dụng ngắn gọn sức mạnh của công cụ unix (chỉ hoạt động với Cygwin trên cửa sổ):

svn status | grep '?' | sed 's/^.* /svn add /' | bash

8

Câu hỏi Siêu cũ nhưng tôi chạy vào vấn đề này chỉ là bây giờ và giải pháp tôi thấy không được liệt kê ở đây. Câu trả lời của Adrian Smith đang đi đúng hướng. Tôi cho rằng các tài liệu và chính SVN đã thấy nhiều cập nhật trong 5 năm. Đây là những gì tôi tìm thấy trong số SVN docs

Ngay cả khi svn:ignore được đặt, bạn có thể gặp sự cố nếu bạn sử dụng ký tự đại diện shell trong lệnh. Thẻ đại diện Shell được mở rộng thành danh sách mục tiêu rõ ràng trước khi Subversion hoạt động trên chúng, do đó, chạy svn SUBCOMMAND * cũng giống như chạy svn SUBCOMMAND file1 file2 file3 …. Trong trường hợp lệnh svn add, điều này có tác dụng tương tự như khi chuyển tùy chọn --no-ignore. Vì vậy, thay vì sử dụng ký tự đại diện, hãy sử dụng svn add --force . để lên lịch hàng loạt các thứ không được phiên bản để bổ sung. Mục tiêu rõ ràng sẽ đảm bảo rằng thư mục hiện tại không bị bỏ qua vì đã được kiểm soát phiên bản và tùy chọn --force sẽ khiến Subversion thu thập thông tin qua thư mục đó, thêm tệp không phiên bản trong khi vẫn tôn trọng thuộc tính svn:ignore và biến cấu hình thời gian chạy global-ignores. Đảm bảo cung cấp tùy chọn --depth files cho lệnh svn add nếu bạn không muốn thu thập dữ liệu đệ quy đầy đủ cho những thứ cần thêm.

Phiên bản ngắn sử dụng svn add --force . Điều này hoàn toàn phù hợp với tôi.

0

Sử dụng lệnh này thay vì svn add --force *:

svn add --force ./ 

Trong trường hợp này svn tự phân tích tất cả các file trong thư mục và nó coi các tập tin bị bỏ qua, nhưng khi bạn sử dụng *, bạn nêu rõ svn để thêm tất cả các file.

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