Làm cách nào để bỏ qua các tệp trong Subversion?
Ngoài ra, làm cách nào để tìm các tệp không thuộc kiểm soát phiên bản?
Làm cách nào để bỏ qua các tệp trong Subversion?
Ngoài ra, làm cách nào để tìm các tệp không thuộc kiểm soát phiên bản?
Câu trả lời:
(Câu trả lời này đã được cập nhật để phù hợp với hành vi của SVN 1.8 và 1.9)
Bạn có 2 câu hỏi:
Bởi "tệp bị bỏ qua" Tôi có nghĩa là tệp sẽ không xuất hiện trong danh sách ngay cả khi "không đảo ngược": ứng dụng khách SVN của bạn sẽ giả vờ rằng tệp không tồn tại trong hệ thống tệp.
Các tập tin bị bỏ qua được chỉ định bởi một "mẫu tập tin". Cú pháp và định dạng của các mẫu tệp được giải thích trong tài liệu trực tuyến của SVN: http://svnbook.red-bean.com/nightly/en/svn.advified.props.special.ignore.html "Các mẫu tệp trong Subversion".
Subversion, kể từ phiên bản 1.8 (tháng 6 năm 2013) trở lên, hỗ trợ 3 cách khác nhau để chỉ định các mẫu tệp. Dưới đây là một bản tóm tắt với các ví dụ:
global-ignores
tùy chọn:global-ignores
danh sách của bạn sẽ không được chia sẻ bởi những người dùng khác và nó áp dụng cho tất cả các repos bạn thanh toán trên máy tính của bạn.C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
trong cả hai HKLM
và HKCU
.~/.subversion/config
svn:ignore
Thuộc tính, được đặt trên thư mục (không phải tệp):.gitignore
việc.svn:ignore
được áp dụng cho các thư mục và không đệ quy hoặc kế thừa. Bất kỳ tệp hoặc thư mục con ngay lập tức của thư mục mẹ phù hợp với Mẫu tệp sẽ bị loại trừ.Trong khi SVN 1.8 bổ sung khái niệm "thuộc tính được thừa kế", svn:ignore
bản thân thuộc tính bị bỏ qua trong các thư mục con cháu không ngay lập tức:
cd ~/myRepoRoot # Open an existing repo.
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt".
svn status # Check to see if the file is ignored or not.
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored.
svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory.
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory.
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt".
svn status
> ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored!
> 1 unversioned file
(Vì vậy, tệp ./subdirectory/ignoreThis
không bị bỏ qua, mặc dù " ignoreThis.txt
" được áp dụng trên .
root repo).
Do đó, để áp dụng một danh sách bỏ qua đệ quy bạn phải sử dụng svn propset svn:ignore <filePattern> . --recursive
.
<filePattern>
giá trị này khác nhau trong một thư mục con thì giá trị của con sẽ hoàn toàn ghi đè lên cha mẹ, do đó không có hiệu ứng "phụ gia".<filePattern>
gốc .
, thì bạn phải thay đổi nó --recursive
để ghi đè lên thư mục con và con cháu.Tôi lưu ý rằng cú pháp dòng lệnh là phản trực giác.
svn ignore pathToFileToIgnore.txt
tuy nhiên đây không phải là cách tính năng bỏ qua của SVN hoạt động.svn:global-ignores
sản. Yêu cầu SVN 1.8 (tháng 6 năm 2013):svn:ignore
, ngoại trừ việc nó sử dụng tính năng "thuộc tính được thừa kế" của SVN 1.8.svn:ignore
, mẫu tệp được tự động áp dụng trong mọi thư mục con cháu (không chỉ con ngay lập tức).
svn:global-ignores
với --recursive
cờ, như thừa hưởng bỏ qua mô hình tập tin sẽ được tự động áp dụng như họ đang thừa hưởng.Chạy cùng một bộ lệnh như trong ví dụ trước, nhưng sử dụng svn:global-ignores
thay thế:
cd ~/myRepoRoot # Open an existing repo
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt"
svn status # Check to see if the file is ignored or not
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored
svn propset svn:global-ignores "ignoreThis.txt" .
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt"
svn status
> 0 unversioned files # the file is ignored here too!
Toàn bộ sự sắp xếp này gây khó hiểu cho tôi, vì thuật ngữ của TortoiseSVN (như được sử dụng trong hệ thống menu Windows Explorer của họ) ban đầu gây hiểu lầm cho tôi - Tôi không chắc ý nghĩa của trình đơn Bỏ qua "Thêm đệ quy", "Thêm *" và "Thêm" tùy chọn. Tôi hy vọng bài đăng này giải thích cách tính năng Bỏ qua liên kết với tính năng SVN Properties. Điều đó nói rằng, tôi khuyên bạn nên sử dụng dòng lệnh để đặt các tệp bị bỏ qua để bạn cảm nhận về cách thức hoạt động của nó thay vì sử dụng GUI và chỉ sử dụng GUI để thao tác các thuộc tính sau khi bạn cảm thấy thoải mái với dòng lệnh.
Lệnh svn status
sẽ ẩn các tệp bị bỏ qua (nghĩa là các tệp khớp với global-ignores
mẫu RGA hoặc khớp với svn:ignore
mẫu của thư mục mẹ ngay lập tức hoặc khớp với bất kỳ mẫu nào của thư mục ancesor svn:global-ignores
.
Sử dụng --no-ignore
tùy chọn để xem những tập tin được liệt kê. Các tệp bị bỏ qua có trạng thái I
, sau đó chuyển đầu ra grep
thành chỉ hiển thị các dòng bắt đầu bằng "I".
Lệnh là:
svn status --no-ignore | grep "^I"
Ví dụ:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
ta-da!
svn propedit svn:ignore .
và không có trình soạn thảo văn bản nào được định cấu hình, bạn sẽ nhận được thông báo lỗi cho biết svn: E205007: Không có biến môi trường nào SVN_EDITOR, VISUAL hoặc EDITOR được đặt và không có tùy chọn cấu hình thời gian chạy 'Editor-cmd' tìm thấy thay vì mở một trình soạn thảo. Vì vậy, chỉ cần xác định --editor-cmd nano như thế nàysvn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
Sử dụng lệnh sau để tạo danh sách không thuộc tệp kiểm soát phiên bản.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Sau đó chỉnh sửa tệp để chỉ các tệp bạn thực sự muốn bỏ qua . Sau đó sử dụng cái này để bỏ qua các tệp được liệt kê trong tệp:
svn propset svn:ignore -F ignoring.txt .
Lưu ý dấu chấm ở cuối dòng. Nó nói với SVN rằng thuộc tính đang được đặt trên thư mục hiện tại.
Xóa tệp:
rm ignoring.txt
Cuối cùng cam kết,
svn ci --message "ignoring some files"
Sau đó, bạn có thể kiểm tra tệp nào bị bỏ qua thông qua:
svn proplist -v
svn status | awk "/^?/ {print \$2}" > ignoring.txt
.
svn pg svn:ignore . >> ignore.txt
sau lệnh đầu tiên để thêm các bỏ qua hiện tại vào tệp.
Bạn có thể bỏ qua một tập tin hoặc thư mục như .gitignore. Chỉ cần tạo một tệp văn bản của danh sách các thư mục / tệp bạn muốn bỏ qua và chạy mã dưới đây:
svn propset svn:ignore -F ignorelist.txt .
HOẶC nếu bạn không muốn sử dụng tệp văn bản, bạn có thể làm như thế này:
svn propset svn:ignore "first
second
third" .
Nguồn: Blog của Karsten - Đặt svn: bỏ qua cho nhiều tệp từ dòng lệnh
svn:ignore
lệnh (xem stackoverflow.com/a/58380306/189518 )
Nếu bạn đang sử dụng TortoiseSVN , nhấp chuột phải vào một tệp và sau đó chọn TortoiseSVN / Thêm vào danh sách bỏ qua . Điều này sẽ thêm tập tin / ký tự đại diện vào svn:ignore
tài sản.
svn:ignore
sẽ được kiểm tra khi bạn đang kiểm tra các tệp và các tệp phù hợp sẽ bị bỏ qua. Tôi có danh sách bỏ qua sau đây cho một dự án Visual Studio .NET:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Bạn có thể tìm thấy danh sách này trong menu ngữ cảnh tại TortoiseSVN / Properties .
Vì dường như không ai nhắc đến nó ...
svn propedit svn:ignore .
Sau đó chỉnh sửa nội dung của tệp để chỉ định các mẫu cần bỏ qua, thoát khỏi trình chỉnh sửa và bạn đã hoàn tất.
Tôi tìm thấy bài viết .svnignore Ví dụ cho Java .
Ví dụ: .svnignore cho Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
Và sau đó:
svn propset svn:ignore -F .svnignore .
Ví dụ cho .gitignore. Bạn có thể sử dụng cho .svnignore của bạn
Khi sử dụng propedit, đảm bảo không có bất kỳ dấu cách nào vì điều đó sẽ khiến tệp bị loại khỏi danh sách bỏ qua.
Chúng được chèn tự động nếu bạn sử dụng tab-autocomplete trên linux để tạo tệp để bắt đầu:
svn propset svn:ignore 'file1
file2' .
Một giải pháp khác là:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
hoặc từng dòng
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Những gì nó làm:
Ngoài ra, nếu bạn sử dụng Rùa SVN, bạn có thể làm điều này:
config
tập tin.
Một phiên bản dễ đọc hơn của câu trả lời của bkbilly:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Những gì nó làm:
Bạn cũng có thể đặt mẫu bỏ qua toàn cục trong tệp cấu hình của SVN.
svn status
sẽ cho bạn biết những tập tin nào không có trong SVN, cũng như những gì đã thay đổi.
Nhìn vào các thuộc tính SVN cho thuộc tính bỏ qua.
Đối với tất cả mọi thứ SVN, Sách đỏ được yêu cầu đọc.
Thêm một thư mục để lật đổ và bỏ qua nội dung thư mục
svn propset svn:ignore '\*.*' .
hoặc là
svn propset svn:ignore '*' .
Sử dụng lệnh svn status trên bản sao làm việc của bạn để hiển thị trạng thái của các tệp, các tệp chưa được kiểm soát phiên bản (và không bị bỏ qua) sẽ có dấu chấm hỏi bên cạnh chúng.
Đối với việc bỏ qua các tệp bạn cần chỉnh sửa svn: bỏ qua thuộc tính, hãy đọc chương Bỏ qua các mục không đảo ngược trong svnbook tại http://svnbook.red-bean.com/en/1.5/svn.advified.props.special.ignore. html . Cuốn sách cũng mô tả thêm về việc sử dụng trạng thái svn.
SVN ignore
dễ quản lý trong TortoiseSVN. Mở TortoiseSVN và nhấp chuột phải vào menu tệp, sau đó chọn Thêm vào danh sách bỏ qua.
Điều này sẽ thêm các tập tin trong svn:ignore
tài sản. Khi chúng tôi kiểm tra trong các tệp thì những tệp được khớp với svn:ignore
đó sẽ bị bỏ qua và sẽ không cam kết.
Trong dự án Visual Studio, chúng tôi đã thêm các tệp sau để bỏ qua:
bin obj
*.exe
*.dll
*.pdb
*.suo
Chúng tôi đang quản lý mã nguồn trên SVN của Comparetrap sử dụng phương pháp này thành công
Điều gì làm việc cho tôi:
Làm cách nào để bỏ qua các tệp trong Subversion?
1.Trong File Explorer, nhấp chuột phải vào tên thư mục dự án SVN 2. Nhấp vào
cửa sổ
"SVN Commit ..."
3.A "commit" sẽ xuất hiện 4.
Nhấp chuột phải vào thư mục / tệp mà bạn muốn bỏ qua
5. Nhấp
vào Thêm để bỏ qua danh sách 6. Chọn
thư mục / tệp
7. Tham khảo "thay đổi thuộc tính" thành SVN
Ngoài ra, làm cách nào để tìm các tệp không thuộc kiểm soát phiên bản?
Sau Bước 3 ở trên, nhấp vào "Hiển thị tệp không đảo ngược"