我在windows上使用TortoiseSVN,使用命令行svn.exe
.
我正在努力获得日志消息中特定文本的最新svn log
消息。我使用下面的命令来获取特定文本的所有日志消息。
svn log --search="text"
我得到具有该"文本"的消息列表。但从这个列表中,我只想要最新的一个。我怎样才能得到它呢?
您需要像这样在命令中添加-l 1
:
svn log -l 1 --search="text"
-l
标志是--limit
的简写版本:
——limit (-l) NUM
只显示第一个NUM日志消息。
这里的first NUM log messages
是指从latest ->古老。
您可以在这里查看svn log
命令上的一些文档。
在这种情况下,根据@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_term
变量为您想要的,但它应该工作
看起来仅使用svn.exe
命令行客户端是不可能的。
下面不真实的部分,参见更新的@Noelkd的答案!
@Noelkd的答案是不正确的,就我现在所看到的。使用-l 1
选项限制了搜索查询的范围,而不是它产生的输出。