我在Windows上使用TortoiseSVN,使用命令行svn.exe
。
我正在努力为日志消息中的特定文本获取最新的svn log
消息。
我使用以下命令获取特定文本的所有日志消息。
svn log --search="text"
我得到一条消息列表,其中包含#34; text"。但是从这个列表中,我只想要最新的一个。我怎么能得到它?
答案 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
结果,然后得到最高版本作为结果。
您需要将url
和search_term
变量更改为您想要的变量,但它应该有效。
答案 1 :(得分:0)
看起来只有svn.exe
命令行客户端才能实现。
下面的非实际部分,请参阅@ Noelkd的更新回复!
根据我现在的情况,@ Noelkd的答案是不正确的。使用-l 1
选项会限制搜索查询的范围,而不是它产生的输出。