我想通过作者
从一系列修订中创建一个补丁我当前的命令行是这样的:
svn diff -rFIRSTREVISION:LATESTREVISION pathOfWorkingCopy > /myPatchFile.patch
无论如何,我还可以指定进行这些更改的作者吗?
答案 0 :(得分:1)
简短回答:不,不是标准命令行。
但是,使用svn log -q
找到作者的修订应该很容易。这将仅列出包含作者的修订行。您可以将其与awk
结合使用以查找作者行,然后删除修订版。
从那里,您可以使用-c
查找该修订版中的差异:
$ svn log -q \
| awk -v author=$author -F '|' '$0 ~ /^r/ && $2 = " "author" " {
print substr ($1, 2)
}' | while read rev
do
svn diff -c$rev
done
awk -v author=$author
允许您使用真实作者的名称设置Awk变量author
。 $0 ~ /^r/ && $2 = " "author" "
表示行必须以r
开头(跳过除了短划线之外什么都不包含的行),第二个字段必须是作者被每边的空格包围。这会拉扯作者负责的界限。
最后,print substr ($1,2)
打印出的版本没有前面的r
。
我通过while read
循环对其进行管道处理以对所有修订版执行svn diff -c$rev
。
答案 1 :(得分:0)
每个修订版只有一个作者,因此您只需要确定作者所做的修改,而这些修改要进行差异化。
如果其他作者对与此特定作者交错的相同路径进行了更改,则需要分阶段执行此操作(确定您正在寻找的人创作的修订版,然后执行差异处理每个版本/修订版块。)
答案 2 :(得分:0)
从Subversion 1.8开始,您可以使用--search命令查找某个用户所做的所有提交。
搜索语法:--search
svn log --search usernam e -l 50
然后,您需要解析提交并为每个提交执行差异。
如果你在Linux上,你可以使用bash来执行搜索后用户做出的差异。 Bash-linux-svn solution