【发布时间】:2013-03-28 21:16:20
【问题描述】:
我有一个包含多个用户的存储库。我需要制作一个 python 脚本来检索特定用户的最新提交。如何使用 mercurial 做到这一点?
我正在考虑通过 Python 的 subprocess 调用来调用 hg log 命令。问题是我应该如何调用hg log 命令以便它告诉我用户的最新日志。
【问题讨论】:
-
“最新提交”对您意味着什么?
我有一个包含多个用户的存储库。我需要制作一个 python 脚本来检索特定用户的最新提交。如何使用 mercurial 做到这一点?
我正在考虑通过 Python 的 subprocess 调用来调用 hg log 命令。问题是我应该如何调用hg log 命令以便它告诉我用户的最新日志。
【问题讨论】:
我认为您应该能够通过使用系统调用调用类似的东西来获取单个用户的最新提交。 (命令行版本如下。)
$ hg log -u your-user-name | head -5
head -5 为您的用户名的最新变更集提供完整的缩写 hg log 输出,其中包括五行:变更集、标记、用户、日期和摘要。如果你只想要变更集,你可以使用这些方面的东西。 (还是命令行版本。)
$ hg log -u mike@fontling.com | head -1 | awk '{print $2}'
评论表明这对输出格式做出了毫无根据的假设。我同意。
基于 cmets,这似乎是获取用户最后一次提交的最佳表达式。
hg log -r "last(author('email@domain.com'))"
hg log -r "last(author('Fred Flintstone'))"
获取最后三个 . . .
hg log -r "last(author('email@domain.com'), 3)"
hg log -r "last(author('Fred Flintstone'), 3)"
【讨论】:
hg help log、hg help revsets 和hg help templates。
简单(但不是高效或优雅的方式)
hg log -u USERNAME或(带修订)
hg log -r "author(USERNAME)"有附加价值
如果字符串以“re:”开头,则字符串的其余部分被视为正则表达式。要匹配实际包含“re:”的用户,请使用前缀“literal:”。
【讨论】:
hg help log、hg help revsets 和hg help templates 的链接。
-l 选项(或limit()/last() revset 函数)。