Напечатайте последние сообщения журнала 10/20 / ... svn с помощью diffs - PullRequest
14 голосов
/ 29 июля 2011

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

Ответы [ 3 ]

23 голосов
/ 29 июля 2011

В SVN v1.7 есть опции

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

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

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

2 голосов
/ 29 августа 2013

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

 svn-log-diff()
 {
        for c in `svn log "$@"  | grep '^r' | cut -f1 -d ' ' | sed s/r/-c/`; do
             svn diff --force $c || break
        done
 }
1 голос
/ 31 июля 2011

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

sh svn-diffs.sh 10

. Это добавит отображаемое содержимое в файлы в только что созданном diffs / dir.Таким образом, вы можете просматривать, не беспокоясь о задержке позже.Это сработало в моих тестах.Вы можете просматривать файлы в каталоге diffs / 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/
...