Tôi có thể bỏ qua một thư mục trên svn checkout không? Tôi cần bỏ qua thư mục DOC khi thanh toán tại máy chủ bản dựng của mình.
chỉnh sửa: Bỏ qua bên ngoài không phải là một tùy chọn. Tôi có một số yếu tố bên ngoài mà tôi cần.
Tôi có thể bỏ qua một thư mục trên svn checkout không? Tôi cần bỏ qua thư mục DOC khi thanh toán tại máy chủ bản dựng của mình.
chỉnh sửa: Bỏ qua bên ngoài không phải là một tùy chọn. Tôi có một số yếu tố bên ngoài mà tôi cần.
Câu trả lời:
Bạn không thể trực tiếp bỏ qua các thư mục khi thanh toán, nhưng bạn có thể sử dụng thanh toán thưa thớt trong svn 1.5. Ví dụ:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Thao tác này sẽ kiểm tra các tệp và thư mục từ thân dự án của bạn vào 'my_checkout', nhưng không lặp lại vào các thư mục đó. Ví dụ:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Sau đó, để tải xuống nội dung của 'bar':
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
Có, bạn có thể sử dụng SVN 1.6. Bạn sẽ cần phải kiểm tra trước rồi đánh dấu thư mục để loại trừ rồi xóa thư mục không mong muốn.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
Kể từ bây giờ, bất kỳ bản cập nhật nào đối với bản sao đang hoạt động sẽ không lưu trữ lại thư mục tài liệu.
Xem http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ và http://subversion.apache.org/docs/release-notes/1.6.html#sparse- loại trừ thư mục để biết thêm chi tiết.
Tom
Với các phiên bản trước 1.5, tôi nhận thấy rằng nếu bạn chỉ kiểm tra thư mục trên cùng và sau đó cập nhật có chọn lọc, từ đó các bản cập nhật chỉ ảnh hưởng đến những gì bạn đã kiểm tra. I E.
svn co -N foo
cd foo
svn up -N bar
svn up
Cờ -N làm cho hoạt động không đệ quy. Ở trên sẽ không kiểm tra bất kỳ thứ gì khác ở cấp độ foo, ví dụ: nói là có thư mục lala
, cuối cùng svn up sẽ không kiểm tra thư mục đó mà cập nhật bar
.
Nhưng sau đó, bạn có thể svn up lala
và do đó, thêm nó vào thanh toán.
Có lẽ điều này cũng hoạt động với 1,5.
Bạn có thể đặt thư mục tài liệu trong một kho lưu trữ bên ngoài và sau đó sử dụng svn checkout --ignore-externals
.
external repository
nghĩa là gì. Bạn có thể giải thích nó được không?
Có, Subversion 1.5 có một tính năng gọi là Kiểm tra thưa thớt có thể thực hiện chính xác loại việc này.
Tôi tìm thấy câu hỏi này để tìm cách kiểm tra các nguồn WebKit trong khi loại trừ các bài kiểm tra hồi quy. Tôi đã kết thúc với những điều sau:
svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
--depth immediates
cd WebKit
find . \
-maxdepth 1 -type d \
-not -name '.*' \
-not -name '*Tests' \
-not -name 'Examples' \
-not -name 'Websites' \
| (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)
Lưu ý rằng bạn có thể thay đổi các loại trừ khi bạn thấy phù hợp, nhưng. * Nên bỏ qua thư mục làm việc (đã được cập nhật) và tất cả các thư mục .svn.
Gần đây tôi đã giải quyết cùng một nhiệm vụ. Ý tưởng là lấy ngay danh sách thư mục / tệp trong kho lưu trữ loại trừ các mục bạn cần, sau đó kiểm tra các thư mục còn lại và cập nhật tệp ngay lập tức nếu có. Đây là giải pháp:
# Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
# This files are to be excluded (folders are ending with '/')
# this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
# Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
# Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
# Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
# Initial nonrecursive checkout of repository - just empty
# to the current (./) working directory
svn co $rpath ./ --depth empty && \
# Update the files
svn up $files &&\
# Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`
Thay đổi thư mục làm việc nguồn. Sao chép các lệnh. Dán. Thay đổi URL thích hợp và mẫu loại trừ. Chạy lệnh.
Cảm ơn,
Không, bỏ qua chỉ để thêm tệp.
Bạn có thể sử dụng thanh toán thưa thớt (nếu bạn sử dụng svn 1.5)
Như một số người khác đã đề cập, bạn chỉ có thể sử dụng thuộc tính svn: externals và sau đó tùy chọn --ignore-externals khi bạn thanh toán. Tuy nhiên, một điều cần lưu ý là svn: externals không nhất thiết phải tham chiếu đến một kho lưu trữ khác. Nó có thể là một tham chiếu đến một số thư mục khác trong cùng một repo.