Câu hỏi Làm thế nào để tôi có được danh sách tất cả các tập tin không phiên bản từ SVN?


Đôi khi bạn đang phát triển và bạn quyết định cam kết, quên bạn đã tạo một vài tệp trong dự án của mình. Sau đó một vài ngày xuống dòng bạn của bạn được xây dựng của bạn ra khỏi Subversion và phàn nàn rằng một số tập tin dường như bị thiếu. Bạn nhận ra, ah crap, tôi quên để thêm những tập tin!

Làm thế nào tôi có thể nhận được một danh sách các tập tin mà không phải là dưới sự kiểm soát phiên bản từ Subversion vì vậy tôi chắc chắn rằng tôi đã thêm tất cả mọi thứ vào kho lưu trữ?


76
2017-10-19 05:25


gốc




Các câu trả lời:


Sử dụng svn status chỉ huy:

svn status | grep ^?

Các tệp không được phiên bản được chỉ báo bằng? ở đầu dòng.

Nếu bạn thấy rằng bạn luôn có một số tệp cụ thể không được thêm vào kho lưu trữ (ví dụ: các tệp nhị phân đã tạo), bạn nên thiết lập svn:ignore thuộc tính trên thư mục chứa để các tệp này sẽ không hiển thị khi sử dụng svn status.


98
2017-10-19 05:26



Cá nhân, tôi luôn "svn diff" trước "svn ci", nhưng vì đôi khi chậm, tôi luôn "svn stat" trước "svn diff", tiện dụng vì sau đó tôi không quên thêm thứ :) - ephemient
Nếu bạn có nhiều tệp không phiên bản mà bạn muốn thêm, hãy làm như sau: svn st | grep ^? | awk '{print $2} | xargs svn add  Điều này đầu tiên sẽ tìm thấy các tập tin không phiên bản, awk sẽ in chỉ mục thứ hai trong dòng (tức là đường dẫn tệp) và xargs sẽ làm cho đường dẫn này trở thành đối số của svn add. - duality_
Một dấu nháy đơn bị thiếu ở cuối lệnh awk. Lệnh phải là: svn st | grep ^? | awk '{print $2}' | xargs svn add - jplandrain
Cũng hoạt động trong Windows: svn status | find "?" - Florian Straub


Nếu một số tệp đã bị 'bỏ qua' được thêm vào trạng thái của chúng, chúng sẽ không hiển thị trong trạng thái 'svn'. Có thể bạn sẽ cần:

svn status --no-ignore

41
2017-08-29 14:05



Cũng hữu ích cho các tập tin nhị phân mà trong thiết lập của tôi dường như bị bỏ qua bởi tình trạng svn theo mặc định. Tôi có lẽ không nhận thức được một số thiết lập mà làm điều này, nhưng sử dụng --no-ignore đã giúp tôi trong kịch bản này. - Andy Weinstein
Đây sẽ là câu trả lời được chấp nhận vì câu trả lời đã chọn không hoạt động trong trường hợp của tôi (đối với các tệp nhị phân trong môi trường Linux) - Asqan


Nếu bạn đang chạy trên Windows, bạn có thể làm điều gì đó tương tự như Greg Hewgillcâu trả lời bằng PowerShell.

(svn stat) -match '^\?'

Điều này có thể được mở rộng khá dễ dàng để tìm tất cả các tập tin không được phiên bản và bỏ qua và xóa chúng.

(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm

Hy vọng đó là hữu ích cho một ai đó!


15
2017-07-04 12:42



Cái này như thế nào () -math gọi là? - Pavel Petrov


Hoặc từ dòng lệnh của Windows:

svn stat | find "?"

10
2017-11-26 17:05





Bạn có thể sử dụng lệnh này để liệt kê tất cả các đường dẫn cho các tệp không được phiên bản:

svn status | awk '/^?/ {print $2}'

Phần đầu tiên sẽ làm svn statusvà sau đó nó sẽ chuyển hướng đầu ra đến AWK mà sẽ làm bộ lọc đơn giản "ký tự đầu tiên phải là '?'" sau đó nó sẽ in tham số thứ hai "đó là đường dẫn tập tin".

svn status Se luôn luôn không phải in các tập tin bị bỏ qua. Bạn có thể thêm tệp hoặc đường dẫn bằng cách thêm đường dẫn đó bằng cách sử dụng

svn propset svn:ignore "PATH OR PATERN"

0
2017-09-25 11:00



Điều này dường như nhận được tất cả kết quả của svn status, không chỉ các tệp không được phiên bản. Tôi tin rằng lệnh nên svn status | awk '/^\?/ {print $2}' để thoát khỏi ?, vì bộ lọc là biểu thức chính quy. - KymikoLoco