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