使用差异打印上次10/20 / ... svn日志消息

时间:2011-07-29 15:09:35

标签: svn version-control diff

我正在使用SVN进行项目。使用svn log -l 10,我可以获得最后10次提交到此文件夹,包含修订版ID,日志消息等。是否有任何SVN命令允许我在命令行上打印出每个文件夹的所有差异变更?我想做一些grepping / etc。与最后的X差异?

3 个答案:

答案 0 :(得分:23)

在SVN v1.7中,有

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

可以与svn log

一起使用的选项

对于旧版本(可能是您的情况),您必须执行一些脚本来提供svn diff的修订并获取输出

答案 1 :(得分:2)

对于较旧的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
 }

答案 2 :(得分:1)

假设您使用的是Linux,请使用以下脚本。像svn-diffs.sh一样保存它。 然后运行

sh svn-diffs.sh 10

这会将diffed内容添加到新创建的diff / 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/