SVN日志::如何通过将注释中的特定模式变灰来提取SVN日志

SVN日志::如何通过将注释中的特定模式变灰来提取SVN日志,svn,unix,Svn,Unix,任何一位开发人员在svn中签入代码时,都会在“注释”字段中输入提交修复程序的票据。现在我只想提取此票据的svn日志。有人能告诉我如何修改svn log命令,以便获得使用该票证签入的所有文件的列表吗# PFB虚拟示例: svn log <svn url> o/p:: r1000 | author | 2013-04-19 11:48:16 A abc.txt`` M def.txtD `` pqr.txt`` ticket#::filesche

任何一位开发人员在svn中签入代码时,都会在“注释”字段中输入提交修复程序的票据。现在我只想提取此票据的svn日志。有人能告诉我如何修改svn log命令,以便获得使用该票证签入的所有文件的列表吗#

PFB虚拟示例:

svn log <svn url>
o/p::

r1000 | author | 2013-04-19 11:48:16

    A abc.txt``
    M def.txtD ``
      pqr.txt``

    ticket#::filescheckedin
svn日志
o/p::
r1000 |作者| 2013-04-19 11:48:16
A abc.txt``
M def.txtD``
pqr.txt``
票证#:::文件已在
现在,如果我grep
ticket#
,我就不会得到经过修改的文件列表。
好心的建议。提前感谢。

使用GNU awk,您可以非常轻松地做到这一点:

svn log ... | gawk 'BEGIN { RS = "----*\n" }
/ticketnumber/ { print $0 }'
其中ticketnumber是要搜索的字符串

这是通过将输入记录分隔符设置为svn在日志记录之间打印的破折号行,并仅匹配所需的记录来实现的


请注意,您需要的是gawk,而不是awk。对于这种情况,我喜欢使用
svn log-v--xml
&用xml/xpath libs检查它的更结构化(但可能资源更重)的方法。感谢您的回复。感谢您的回复。场景是当我,比如说,在一次提交中用一条注释签入10个文件时。稍后,通过将注释字段中的特定模式(例如,对于ticket#),我需要提取使用该注释签入的所有文件的列表。希望这有帮助。提前感谢您,您可以编写一个使用libsvn perl的小型perl程序(或者使用libsvn接口编写任何您喜欢的程序)。在那里,您可以通过给定的接口检索日志。它将为您提供一个函数调用中每个提交的详细信息。在那里,如果您找到了票证ID,您可以grep提交消息并打印所需信息,或者忽略此提交而不打印任何内容。