有关svn log命令行的查询

时间:2014-07-01 07:53:33

标签: svn tortoisesvn

我在Windows上使用TortoiseSVN,使用命令行svn.exe

我正在努力为日志消息中的特定文本获取最新的svn log消息。 我使用以下命令获取特定文本的所有日志消息。

svn log --search="text"

我得到一条消息列表,其中包含#34; text"。但是从这个列表中,我只想要最新的一个。我怎么能得到它?

2 个答案:

答案 0 :(得分:2)

您需要在命令中添加-l 1,如下所示:

svn log -l 1 --search="text"

-l标志是--limit的较短版本:

  

- 限制(-l)NUM

     

仅显示前NUM条日志消息。

first NUM log messages表示它是按照最新顺序命中的第一个 - >最古老的。

您可以在svn log命令 here 上查看一些文档。


根据@ bahrep的回答,上述情况在这种情况下实际上并不起作用,因为这似乎只能使用svn.exe。我创建了一个python脚本来执行它:

import xml.etree.ElementTree as ET
import subprocess
import sys

# Change the below to your url and search string
url = "http://svn.apache.org/repos/asf/spamassassin/trunk"
search_term = "160"

# Run the svn log command and get the results as xml
args = ["svn", "log",'--search="{0}"'.format(search_term), url, "--xml"]
svn_out = subprocess.check_output(" ".join(args))
svn_xml = ET.fromstring(svn_out)

try:
    # Get the latest log by revision number
    latest_log = max(svn_xml, key=lambda x : int(x.attrib["revision"]))
except ValueError:
    sys.exit("No Results Found")  # Empty svn_xml would indicate no results.

# Print log author and message
author = latest_log.find("author").text
msg = latest_log.find("msg").text
print "{0} : {1}".format(author, msg)

在Windows中使用python 2.7返回给我:

python .\svn_redemption.py
spamassassin_role : updated scores for revision 1607021 active rules added since last mass-check

基本上它从命令行输出中得到xml结果,然后得到最高版本作为结果。

您需要将urlsearch_term变量更改为您想要的变量,但它应该有效。

答案 1 :(得分:0)

看起来只有svn.exe命令行客户端才能实现。

下面的非实际部分,请参阅@ Noelkd的更新回复!

根据我现在的情况,@ Noelkd的答案是不正确的。使用-l 1选项会限制搜索查询的范围,而不是它产生的输出。