Svn 如何查找特定Subversion用户所做的修订?

Svn 如何查找特定Subversion用户所做的修订?,svn,Svn,使用命令行,我希望看到特定用户所做的所有更改集。这可能吗?我已经查看了svn日志的文档,但看不到如何做到这一点。我不知道使用纯Subversion可以实现这一点。但你可以做到: 这将查找用户名的每个实例,然后将所有内容打印到标记日志中记录结束的虚线 搜索模式非常灵活-您可以轻松地修改它以搜索其他内容。比如说, svn log | sed -n '/Dec 2009/,/-----$/ p' 将返回(任何作者)在12月做出的所有承诺 编辑:如果您不需要实际的提交消息,而只需要摘要元数据,那么您可

使用命令行,我希望看到特定用户所做的所有更改集。这可能吗?我已经查看了svn日志的文档,但看不到如何做到这一点。

我不知道使用纯Subversion可以实现这一点。但你可以做到:

这将查找用户名的每个实例,然后将所有内容打印到标记日志中记录结束的虚线

搜索模式非常灵活-您可以轻松地修改它以搜索其他内容。比如说,

svn log | sed -n '/Dec 2009/,/-----$/ p'
将返回(任何作者)在12月做出的所有承诺

编辑:如果您不需要实际的提交消息,而只需要摘要元数据,那么您可以使用
grep
,类似于William Leara的Windows:

Windows版本:

svn log | find "William_Leara"
输出如下所示:

r11506 | William_Leara | 2009-12-23 19:29:12 -0600 (Wed, 23 Dec 2009) | 12 lines
r11505 | William_Leara | 2009-12-23 15:18:37 -0600 (Wed, 23 Dec 2009) | 12 lines
r11504 | William_Leara | 2009-12-22 19:16:12 -0600 (Tue, 22 Dec 2009) | 12 lines
r11503 | William_Leara | 2009-12-22 19:04:15 -0600 (Tue, 22 Dec 2009) | 12 lines
r11502 | William_Leara | 2009-12-22 18:49:33 -0600 (Tue, 22 Dec 2009) | 12 lines
r11501 | William_Leara | 2009-12-22 18:26:45 -0600 (Tue, 22 Dec 2009) | 12 lines
r11500 | William_Leara | 2009-12-22 18:05:04 -0600 (Tue, 22 Dec 2009) | 12 lines
r11499 | William_Leara | 2009-12-22 17:25:25 -0600 (Tue, 22 Dec 2009) | 12 lines
r11498 | William_Leara | 2009-12-22 17:03:18 -0600 (Tue, 22 Dec 2009) | 12 lines
r11497 | William_Leara | 2009-12-22 16:54:59 -0600 (Tue, 22 Dec 2009) | 12 lines
r11494 | William_Leara | 2009-12-21 14:36:20 -0600 (Mon, 21 Dec 2009) | 12 lines
r11491 | William_Leara | 2009-12-19 12:48:49 -0600 (Sat, 19 Dec 2009) | 12 lines

等等。

如果您不介意阅读XML格式的日志,下面介绍如何使用:


最简单的方法是使用Subversion 1.8+命令行客户端;它支持
--search
--search and
选项,允许您过滤
svn log
输出,以仅显示与指定搜索模式匹配的修订

,

比如说,

svn log | sed -n '/Dec 2009/,/-----$/ p'
搜索用户Sally或Harry提交的修订:

$ svn log --search Sally --search Harry https://svn.example.com/repos/test
------------------------------------------------------------------------
r1701 | Sally | 2011-10-12 22:35:30 -0600 (Wed, 12 Oct 2011) | 1 line

Add a reminder.
------------------------------------------------------------------------
r1564 | Harry | 2011-10-09 22:35:30 -0600 (Sun, 09 Oct 2011) | 1 line

Merge r1560 to the 1.0.x branch.
------------------------------------------------------------------------
$
搜索用户Sally提交到/foo/bar/helloworld.cpp的修订:

$ svn log --verbose --search Sally --search-and /foo/bar/helloworld.cpp https://svn.example.com/repos/test
------------------------------------------------------------------------
r1555 | Sally | 2011-07-15 22:33:14 -0600 (Fri, 15 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp

Typofix.
------------------------------------------------------------------------
r1530 | Sally | 2011-07-13 07:24:11 -0600 (Wed, 13 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp
M /foo/build

Fix up some svn:ignore properties.
------------------------------------------------------------------------
$
注意:您也可以使用来执行搜索和筛选。

在Windows下,使用
sed的版本,我需要使用这些regexp,在下一行的开头匹配到--:

svn log | sed -n "/username/,/^----/p"

这相当于Unix中的svn日志| grep'William_Leara'
。我没有想到OP可能只是想要元数据。我的回答中的
sed
解决方案也提取提交消息,这可能是他想要的,也可能不是他想要的。目前为止,最强大的IMHO,但我无法让xmlstarlet在流模式下工作,因此我必须剪切和关闭日志的标记。sed忽略了/和p之间的空白;有些人可能会发现不同的格式更容易一目了然。
$ svn log --search Sally --search Harry https://svn.example.com/repos/test
------------------------------------------------------------------------
r1701 | Sally | 2011-10-12 22:35:30 -0600 (Wed, 12 Oct 2011) | 1 line

Add a reminder.
------------------------------------------------------------------------
r1564 | Harry | 2011-10-09 22:35:30 -0600 (Sun, 09 Oct 2011) | 1 line

Merge r1560 to the 1.0.x branch.
------------------------------------------------------------------------
$
$ svn log --verbose --search Sally --search-and /foo/bar/helloworld.cpp https://svn.example.com/repos/test
------------------------------------------------------------------------
r1555 | Sally | 2011-07-15 22:33:14 -0600 (Fri, 15 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp

Typofix.
------------------------------------------------------------------------
r1530 | Sally | 2011-07-13 07:24:11 -0600 (Wed, 13 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp
M /foo/build

Fix up some svn:ignore properties.
------------------------------------------------------------------------
$
svn log | sed -n "/username/,/^----/p"