Tôi muốn một câu trả lời, bản thân mình. Hãy thử làm như sau để đầu ra chỉ xóa từ svn log
.
svn log --stop-on-copy --verbose [--limit <limit>] <repo Url> | \
awk '{ if ($0 ~ /^r[0-9]+/) rev = $0 }
{ if ($0 ~ /^ D /) { if (rev != "") { print rev; rev = "" }; print $0 } }'
Điều này lọc đầu ra nhật ký thông qua awk . awk đệm mỗi dòng sửa đổi mà nó tìm thấy, chỉ xuất ra khi bản ghi xóa được tìm thấy. Mỗi sửa đổi chỉ là đầu ra một lần, do đó, nhiều lần xóa trong một sửa đổi được nhóm lại với nhau (như trong tiêu chuẩnsvn log
đầu ra ).
Bạn có thể chỉ định a --limit
để giảm số lượng hồ sơ trả lại. Bạn cũng có thể loại bỏ --stop-on-copy
, khi cần thiết.
Tôi biết có những phàn nàn về hiệu quả của việc phân tích toàn bộ nhật ký. Tôi nghĩ rằng đây là một giải pháp tốt hơn grep và -B
tùy chọn "cast a wide net" của nó . Tôi không biết nếu nó hiệu quả hơn, nhưng tôi không thể nghĩ ra một giải pháp thay thế svn log
. Nó tương tự như câu trả lời của @Alexander Amelkin, nhưng không cần một cái tên cụ thể. Đó cũng là kịch bản awk đầu tiên của tôi , vì vậy nó có thể là độc đáo.