Я сам хотел получить ответ. Попробуйте следующее, чтобы выводить только удаления из 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 } }'
Фильтрует вывод журнала через awk . awk буферизует каждую найденную строку ревизии, выводя ее только при обнаружении удаляемой записи. Каждая ревизия выводится только один раз, поэтому несколько удалений в ревизии группируются (как при стандартном выводе svn log
).
Вы можете указать --limit
, чтобы уменьшить количество возвращаемых записей. При необходимости вы также можете удалить --stop-on-copy
.
Я знаю, что есть жалобы на эффективность анализа всего журнала. Я думаю, что это лучшее решение, чем grep и его опция «бросить широкую сеть» -B
. Я не знаю, является ли это более эффективным, но я не могу придумать альтернативу svn log
. Это похоже на ответ @Alexander Amelkin, но не требует конкретного имени. Это также мой первый скрипт awk , так что он может быть нетрадиционным.