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

时间:2010-06-10 23:22:33

标签: svn logging concatenation

我想在我的subversion日志中获取所有提交消息,并将它们连接成一个文本文件,最好使用Windows上的svn命令行。

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

- r1留言
- r1留言
- r1消息

我想要的是:

- r1留言
- r1留言
- r2留言
- r2留言
- r3留言
[...]
- r1000留言

更新

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

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

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

5 个答案:

答案 0 :(得分:6)

您可以使用--xml命令的svn log参数,该命令将输出格式设置为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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

从windows命令行,不知道如何摆脱-------

的界限
svn log - q > svn.log

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您是Java开发人员,可以使用SVNKit准确编写您希望的Subversion提取程序。

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