Tôi đã sử dụng câu trả lời của Wim Coenen và viết đoạn mã sau để tạo danh sách tất cả các bản sửa đổi:
getSvnRevs() {
cd "$1"
wcver="$(svnversion)"
[ -n "$wcver" ] || panic "Unable to get version for $wcdir"
echo "$1: $wcver"
svn propget svn:externals -R | while read a b c d e; do
[ -n "$a" ] || continue
if [ "$b" = "-" ]; then
wcparent="$a"
wcdir="$wcparent/$c"
[ -z "$e" ] || panic "Invalid format #1"
else
[ -n "$wcparent" ] || panic "Invalid format #2"
wcdir="$wcparent/$a"
[ -z "$c" ] || panic "Invalid format #3"
fi
[ -d "$wcdir" ] || panic "Invalid directory: $wcdir"
wcver="$(svnversion "$wcdir")"
[ -n "$wcver" ] || panic "Unable to get version for $wcdir"
echo "$1/$wcdir: $wcver"
done
}
May mắn thay, tôi không có các bên ngoài lồng nhau, vì vậy tôi không phải kiểm tra điều này và tôi đoán nó sẽ không hoạt động. Nhưng nếu bạn cần điều này, có lẽ chỉ cần gọi hàm này một cách đệ quy là đủ. Ngoài ra, tôi chưa bao giờ thử nghiệm với các tên tệp cần thoát. Nó có thể sẽ không hoạt động sau đó.
KHUYẾN CÁO: Tôi biết câu hỏi ban đầu là về windows và shell script sẽ không hoạt động ở đó trừ khi bạn đang sử dụng cygwin hoặc tương tự.