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