Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何将来自subversion的所有提交消息连接到一个没有元数据的文本文件中?_Svn_Logging_Concatenation - Fatal编程技术网

Svn 如何将来自subversion的所有提交消息连接到一个没有元数据的文本文件中?

Svn 如何将来自subversion的所有提交消息连接到一个没有元数据的文本文件中?,svn,logging,concatenation,Svn,Logging,Concatenation,我希望将subversion日志中的所有提交消息合并成一个文本文件,最好在windows上使用svn命令行 每个提交消息都有以下格式: -r1消息 -r1消息 -r1消息 我想要的是: from xml.dom.minidom import parse xml = parse("log.xml") entries = xml.getElementsByTagName("logentry") for e in entries: rev = e.getAttribute("revision"

我希望将subversion日志中的所有提交消息合并成一个文本文件,最好在windows上使用svn命令行

每个提交消息都有以下格式:

-r1消息 -r1消息 -r1消息

我想要的是:

from xml.dom.minidom import parse
xml = parse("log.xml")
entries = xml.getElementsByTagName("logentry")
for e in entries:
    rev = e.getAttribute("revision")
    msg = e.getElementsByTagName("msg")[0].firstChild.nodeValue
    print "-r" + rev + " " + msg
-r1消息 -r1消息 -r2消息 -r2消息 -r3消息 [...] -r1000消息

更新

我认为上面的内容很清楚,但我不想在日志中看到这种类型的信息:

r2130 |用户| 2010-03-19 10:36:13-0400星期五,2010年3月19日| 1行


没有元数据,我只需要提交消息。

来自windows命令行,不知道如何删除----

svn log - q > svn.log

使用N Tortoise SVN,您可以右键单击,选择Tortoise/显示日志。选择所有日志并将其粘贴到文件中

如果您是一名Java开发人员,您可以使用来编写您想要的Subversion extract程序

否则,正如其他人所回答的,您可以获取日志输出并手动操作它。

您可以使用svn log命令的-xml参数,该参数将输出格式设置为xml,然后使用一些脚本语言轻松地解析它以生成所需的文本文件。 在python中,类似于:

from xml.dom.minidom import parse
xml = parse("log.xml")
entries = xml.getElementsByTagName("logentry")
for e in entries:
    rev = e.getAttribute("revision")
    msg = e.getElementsByTagName("msg")[0].firstChild.nodeValue
    print "-r" + rev + " " + msg
将其另存为parseLog.py,然后只需启动

svn log --xml > log.xml
python parseLog.py > revisions.txt

正如Davide Gualano所建议的,您可以使用-xml命令生成一个可以解析的输出。使用任意xslt处理器和xslt文件生成所需的输出。请参见示例。

我更新了我的问题,使其更加清晰,因为此方法添加了不需要的元数据。这将删除提交消息,留下------和修订标识符行。抱歉,我不知何故错过了假输出中的“消息”。在这种情况下,您将需要解析输出,在这种情况下@Davide Gualano有一个可行的答案。我更新了我的问题,使之更加清晰,因为此方法还添加了不需要的元数据。似乎没有简单的方法仅使用命令行来完成此操作,这是可以接受的,因为我的大多数安装都有python。此外,日志中的rx只是为了识别日志消息,而不是我想要消息中的修订号。谢谢你,不过,这将工作与一些变化。难以置信的方便。我在svn调用中使用了subprocess,所以我将输出转储到StringIO,执行seek0,并将其传递给parse函数,就像champ一样工作。