打印最后10/20/。。。具有差异的svn日志消息
我正在为一个项目使用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 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
}