如何恢复作者在 svn 中对一系列修订的 svn 更改
How to revert svn changes from a range of revisions by author in svn
我想根据作者的一系列修订创建补丁
我当前的命令行是这样的:
svn diff -rFIRSTREVISION:LATESTREVISION pathOfWorkingCopy > /myPatchFile.patch
我是否还可以指定进行这些更改的作者?
每个修订版只有一位作者,因此您只需确定要比较的作者所做的修订版。
如果其他作者对与该特定作者交错的相同路径进行了更改,您将需要分阶段执行此操作(确定由您要查找的人编写的修订,然后执行差异每个 revision/block 次修订)。
简短回答:不,不是标准命令行。
但是,使用 svn log -q
应该很容易找到作者的修订。这只会列出包括作者在内的修订行。您可以将其与 awk
结合使用以查找作者行,然后进行修订。
从那里,您可以使用 -c
找到该版本中的差异:
$ svn log -q \
| awk -v author=$author -F '|' '[=10=] ~ /^r/ && = " "author" " {
print substr (, 2)
}' | while read rev
do
svn diff -c$rev
done
awk -v author=$author
允许您使用真实作者的姓名设置 Awk 变量 author
。 [=16=] ~ /^r/ && = " "author" "
表示行必须以 r
开头(跳过只包含破折号的行),第二个字段必须是作者,每边都被 space 包围。这拉起作者负责的台词。
最后,print substr (,2)
打印出前面没有 r
的修订版。
我通过一个 while read
循环来对所有修订进行 svn diff -c$rev
处理。
从 Subversion 1.8 开始,您可以使用 --search 命令查找特定用户所做的所有提交。
搜索语法:--search
svn log --search usernam e -l 50
然后您需要解析提交并对每个提交进行比较。
如果您在 Linux 上,您可以使用 bash 在执行搜索后执行用户所做的差异。
Bash-linux-svn solution
我想根据作者的一系列修订创建补丁
我当前的命令行是这样的:
svn diff -rFIRSTREVISION:LATESTREVISION pathOfWorkingCopy > /myPatchFile.patch
我是否还可以指定进行这些更改的作者?
每个修订版只有一位作者,因此您只需确定要比较的作者所做的修订版。
如果其他作者对与该特定作者交错的相同路径进行了更改,您将需要分阶段执行此操作(确定由您要查找的人编写的修订,然后执行差异每个 revision/block 次修订)。
简短回答:不,不是标准命令行。
但是,使用 svn log -q
应该很容易找到作者的修订。这只会列出包括作者在内的修订行。您可以将其与 awk
结合使用以查找作者行,然后进行修订。
从那里,您可以使用 -c
找到该版本中的差异:
$ svn log -q \
| awk -v author=$author -F '|' '[=10=] ~ /^r/ && = " "author" " {
print substr (, 2)
}' | while read rev
do
svn diff -c$rev
done
awk -v author=$author
允许您使用真实作者的姓名设置 Awk 变量 author
。 [=16=] ~ /^r/ && = " "author" "
表示行必须以 r
开头(跳过只包含破折号的行),第二个字段必须是作者,每边都被 space 包围。这拉起作者负责的台词。
最后,print substr (,2)
打印出前面没有 r
的修订版。
我通过一个 while read
循环来对所有修订进行 svn diff -c$rev
处理。
从 Subversion 1.8 开始,您可以使用 --search 命令查找特定用户所做的所有提交。
搜索语法:--search
svn log --search usernam e -l 50
然后您需要解析提交并对每个提交进行比较。
如果您在 Linux 上,您可以使用 bash 在执行搜索后执行用户所做的差异。 Bash-linux-svn solution