Saya ingin jawaban, sendiri. Coba yang berikut untuk hanya mengeluarkan output dari 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 } }'
Ini menyaring keluaran log melalui awk . awk menyangga setiap baris revisi yang ditemukannya, mengeluarkannya hanya saat catatan penghapusan ditemukan. Setiap revisi hanya keluaran sekali, jadi banyak penghapusan dalam revisi dikelompokkan bersama (seperti dalam svn log
output standar ).
Anda dapat menentukan a --limit
untuk mengurangi jumlah catatan yang dikembalikan. Anda juga dapat menghapus --stop-on-copy
, sesuai kebutuhan.
Saya tahu ada keluhan tentang efisiensi parsing seluruh log. Saya pikir ini adalah solusi yang lebih baik daripada grep dan -B
opsi "cast a wide net" . Saya tidak tahu apakah ini lebih efisien, tetapi saya tidak bisa memikirkan alternatifnya svn log
. Ini mirip dengan jawaban @Alexander Amelkin, tetapi tidak perlu nama tertentu. Ini juga skrip awk pertama saya , jadi mungkin tidak konvensional.