2013-04-06 51 views
1

我有一个与多个用户的回购。我需要制作一个python脚本来检索特定用户的最新提交。我如何用mercurial做到这一点?hg log:如何获得特定用户的最新提交?

我正在考虑通过调用Python的subprocess调用hg log命令。问题是我应该如何调用hg log命令,以便它告诉我用户的最新日志。

+0

“最新提交”对您意味着什么? – 2013-04-06 15:19:10

回答

6

易(但不是有效的或优雅的方式)

  • hg log -u USERNAME

或(与revsets)

  • hg log -r "author(USERNAME)"

增值

如果字符串以“re:”开头,则字符串的其余部分将被视为正则表达式。要匹配实际包含“re:”的用户,请使用前缀“literal:”。

+0

也许会添加到['hg help log'](http://www.selenic.com/hg/help/log),['hg help revsets'](http://www.selenic.com/hg/)帮助/复习)和['hg help templates'](http://www.selenic.com/hg/help/templating)。 – 2013-04-06 20:36:53

+0

另外,也许在示例(或者'limit()/ last()'revset函数)中加入'-l'选项。 – 2013-04-06 21:15:35

1

我想你应该可以通过系统调用调用类似这样的方法来获取单个用户的最新提交。 (命令行版本如下。)

$ hg log -u your-user-name | head -5 

head -5给你整个简称hg log输出为您的用户名,其中包括五大行最新的变更:变更,标签,用户,日期和总结。如果你只想要变更集,你可以沿着这些线使用一些东西。 (命令行版本,再次。)

$ hg log -u [email protected] | head -1 | awk '{print $2}' 

注释表明这使得对输出格式的无理假设。我同意。


根据意见,这似乎是最好的表达为获得最后一个从用户提交。

hg log -r "last(author('[email protected]'))" 
hg log -r "last(author('Fred Flintstone'))" 

得到最后三个。 。 。

hg log -r "last(author('[email protected]'), 3)" 
hg log -r "last(author('Fred Flintstone'), 3)" 
+0

管道是坏主意(tm)。模板和日志选项在log – 2013-04-06 15:13:49

+0

的一个调用中可以更好地工作,awk将只打印正确的csrt-hash ** **并重新定义为“:”FS – 2013-04-06 15:17:26

+0

正如已经评论过的,*您可以完成所有*更有效和安全地使用日志选项。请阅读['hg help log'](http://www.selenic.com/hg/help/log),['hg help revsets'](http://www.selenic.com/hg/help)/revsets)和['hg help templates'](http://www.selenic.com/hg/help/templating)。 – 2013-04-06 20:34:37

相关问题