使用命令行,我想查看特定用户所做的所有更改集。这可能吗?我查看了svn log
的文档,但看不到如何执行此操作。
答案 0 :(得分:7)
我不知道如何使用纯Subversion做到这一点。但你可以做到with sed
:
svn log | sed -n '/username/,/-----$/ p'
这将查找用户名的每个实例,然后将所有内容打印到虚线,该虚线标记日志中记录的结尾。
搜索模式非常灵活 - 您可以轻松修改它以搜索其他内容。例如,
svn log | sed -n '/Dec 2009/,/-----$/ p'
将返回12月份(由任何作者)提交的所有提交。
编辑:如果您不想要实际的提交消息,只需要摘要元数据,那么您可以使用grep
,类似于William Leara的Windows {{ 3}}:
svn log | grep username
答案 1 :(得分:4)
如果您不介意阅读XML格式的登录,请按照XML Starlet:
的说明进行操作svn log --xml --verbose <directory> | xmlstarlet sel -t -m "/log/logentry/author[text()='<wanted author>']/.." -c "."
如果您不希望列出这些文件,请删除--verbose
。
这是没有详细的示例输出。
$ svn log --xml zfce | xmlstarlet sel -t -m "/log/logentry/author[text()='pekka.jarvinen']/.." -c "."
<logentry revision="157">
<author>pekka.jarvinen</author>
<date>2009-09-26T19:23:40.060050Z</date>
<msg>fix</msg>
</logentry><logentry revision="156">
<author>pekka.jarvinen</author>
<date>2009-09-25T20:40:01.823746Z</date>
<msg>Dojo files are now downloaded from Google. Also some XHTML JS fixes (CDATA to <script>).</msg>
</logentry><logentry revision="155">
<author>pekka.jarvinen</author>
<date>2009-09-25T17:28:14.501392Z</date>
<msg>Added spans</msg>
</logentry><logentry revision="154">
<author>pekka.jarvinen</author>
<date>2009-09-25T17:21:17.375304Z</date>
<msg>Changed behavior: default.css is now not used as base. CSS in .INI configuration is always loaded.</msg>
</logentry><logentry revision="151">
<author>pekka.jarvinen</author>
<date>2009-04-10T00:24:41.683379Z</date>
<msg>Added more PHP and Apache information</msg>
</logentry>
...
答案 2 :(得分:4)
最简单的方法是使用Subversion 1.8+命令行客户端;它支持--search
和--search-and
选项,允许您过滤svn log
输出以仅显示与您指定的搜索模式匹配的修订。
SVNBook 1.8 | svn log
command-line reference,
Subversion 1.8 Release Notes | svn log
can filter log messages based on search terms.
例如,
搜索用户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.
------------------------------------------------------------------------
$
注意:您还可以使用TortoiseSVN's Revision Log Dialog执行搜索和过滤。
答案 3 :(得分:2)
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
等
答案 4 :(得分:1)
在Windows下,使用private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
{
XmlNode xNode;
TreeNode tNode;
XmlNodeList nodeList;
int i;
if (inXmlNode.HasChildNodes)
{
nodeList = inXmlNode.ChildNodes;
for (i = 0; i <= nodeList.Count - 1; i++)
{
xNode = inXmlNode.ChildNodes[i];
inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
tNode = inTreeNode.Nodes[i];
AddNode(xNode, tNode);
}
}
else
{
inTreeNode.Text = (inXmlNode.OuterXml).Trim();
}
}
版sed
,我需要使用这些正则表达式,在下一行开头匹配----:
svn log | sed -n "/username/,/^----/p"