打印最后10/20/。。。具有差异的svn日志消息

打印最后10/20/。。。具有差异的svn日志消息,svn,version-control,diff,Svn,Version Control,Diff,我正在为一个项目使用SVN。使用svn log-l 10,我可以获得该文件夹的最后10次提交,以及修订id、日志消息等。。是否有任何SVN命令可以让我在命令行上打印出每个变更集的所有差异?我想用最后的X差分做一些放大/等等。在SVN v1.7中,有 --diff : produce diff output --diff-cmd ARG : use ARG as diff command 可与svn日志一起使用的选项 对于较旧的版本(这

我正在为一个项目使用SVN。使用
svn log-l 10
,我可以获得该文件夹的最后10次提交,以及修订id、日志消息等。。是否有任何SVN命令可以让我在命令行上打印出每个变更集的所有差异?我想用最后的X差分做一些放大/等等。在SVN v1.7中,有

 --diff                   : produce diff output
 --diff-cmd ARG           : use ARG as diff command
可与svn日志一起使用的选项


对于较旧的版本(这可能是您的情况),您必须执行一些脚本来提供对
svn diff
的修订,并获得输出假设您使用的是Linux,请使用以下脚本。像svn-diff.sh一样保存它。 然后跑

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

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

酷!尚未发布,在我的ubuntu软件包管理器上也不可用,但很高兴知道它即将发布。@Rory-它们在这里可用,但是预发布的。我用的是1.7。对我来说不起作用-sed是否有问题?它可以工作。我在循环中添加了另一个命令:
svnlog-v$c
,这样我就可以在同一个地方看到提交消息和差异(但速度很慢,因为它必须进行第二次查找)。
 svn-log-diff()
 {
        for c in `svn log "$@"  | grep '^r' | cut -f1 -d ' ' | sed s/r/-c/`; do
             svn diff --force $c || break
        done
 }