关于svn日志命令行的查询

关于svn日志命令行的查询,svn,tortoisesvn,Svn,Tortoisesvn,我在windows上使用OrtoiseSVN,命令行svn.exe 我正在努力获取日志消息中特定文本的最新svn log消息。 我使用下面的命令获取特定文本的所有日志消息 svn log --search="text" 我得到了一个包含该“文本”的消息列表。但是从这个列表中,我只想要最新的一个。我怎样才能得到它?您需要向命令中添加一个-l 1,如下所示: svn log -l 1 --search="text" -l标志是--limit的较短版本: --限制(-l)个数

我在windows上使用OrtoiseSVN,命令行
svn.exe

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

svn log --search="text"

我得到了一个包含该“文本”的消息列表。但是从这个列表中,我只想要最新的一个。我怎样才能得到它?

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

svn log -l 1 --search="text"
-l
标志是
--limit
的较短版本:

--限制(-l)个数

仅显示第一个NUM日志消息

通过
first NUM log messages
表示它按从最新到最旧的顺序命中的第一条日志消息

您可以在
svn日志
命令上查看一些文档


根据@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
结果,然后获得最高版本作为结果


您需要将
url
search\u term
变量更改为所需的变量,但它应该可以工作。

看起来仅使用
svn.exe
命令行客户端是不可能的

下面的非实际部分,请参阅更新的@Noelkd的答案


@就我现在所见,诺尔克德的回答是不正确的。使用
-l 1
选项限制搜索查询的范围,而不是它生成的输出。

它无法找到任何内容<代码>svn日志--search=“0072”
在结果中给出3组行。但是当我使用
svn log--search=“0072”-l 1
时,它不会返回任何行。似乎
-l 1
选项将搜索限制为1个最新版本。在这种情况下它看起来没用。