Подтвердить что ты не робот

Печать последних 10/20/... сообщений svn log с разностями

Я использую SVN для проекта. с svn log -l 10, я могу получить последние 10 коммитов в эту папку с идентификатором ревизии, сообщением журнала и т.д. Есть ли какая-либо команда SVN, которая позволяет мне распечатывать в командной строке все различия для каждого из этих наборов изменений? Я хотел бы сделать grepping/etc. с последними X diffs?

4b9b3361

Ответ 1

В SVN v1.7 есть

 --diff                   : produce diff output
 --diff-cmd ARG           : use ARG as diff command

которые вы можете использовать с svn log

Для более старой версии (это, вероятно, ваш случай) вам нужно будет сделать некоторые сценарии для поставки версии svn diff и получить вывод

Ответ 2

Для старшего svn вы можете использовать функцию:

 svn-log-diff()
 {
        for c in `svn log "[email protected]"  | grep '^r' | cut -f1 -d ' ' | sed s/r/-c/`; do
             svn diff --force $c || break
        done
 }

Ответ 3

Предполагая, что вы используете Linux, используйте следующий script. сохраните его как svn-diffs.sh. Затем запустите

sh svn-diffs.sh 10

Это добавляет расширенное содержимое в файлы под новым созданием diff/dir. Таким образом, вы можете пройти, не беспокоясь о латентности позже. Это работало в моих тестах. Вы можете grep через файлы в разделе diff/dir отдельно иметь цветной выход.

#!/bin/bash
# Author - Kasun Gajasinghe
HEAD="HEAD"
limit=${1}
[[ -z "$1" ]] && limit=10

revisions=$(svn log -l $limit | grep -r "r[0-9][0-9]*\w" -o | grep -r "[0-9][0-9]*" -o)
mkdir diffs
echo $revisions > diffs/revisions.log

for revision in ${revisions}
do
#       svn diff -r $revision:${HEAD} } | grep -ri "SEARCHME" || exit 1

        diff=$(svn diff -r $revision:${HEAD})
        echo "$diff" > diffs/diffs-$revision-$HEAD.log
        echo "=======================" >> diffs/diffs-$revision-$HEAD.log
        HEAD=$revision
done

grep -ri "searchme" diffs/