hg
是否有一种很好的方法可以在单独的行中仅列出repo中最近提交的哈希值? hg id -i
只给我当前的提交。
相当于-l
中hg log
参数的内容,以便我可以执行以下操作:
$ hg id -i -l 3
1eb0c5a3002e <--- youngest commit
321c6693361e <--- 2nd youngest commit
647724838c03 <--- 3rd youngest commit
为了给出一些上下文,我有一个bash脚本,我将mercurial哈希传递给它并构建一个docker镜像,
./build_image.sh 647724838c03
我正在尝试为哈希参数获取命令行,所以我需要一个命令来生成我可以放入compgen
的所有哈希:
local HASHES=$(cd $REPO && hg id -i -l 10)
COMPREPLY=( $(compgen -W "$HASHES" -- $cur) )
大多数情况下,我想要构建的哈希将是签出提交,因此hg id -i
可以正常工作,但获取最后10个哈希的完整列表会很好!
提前感谢您的帮助!
修改
我开始使用grep
和awk
:
$ hg log -l 5 | grep changeset | awk -vn=12 '{print substr($0,length($0)-n+1)}'
1eb0c5a3002e
ec0db890a6c3
321c6693361e
4a1e2ca2df06
2d1ef7d57485
但这并不是很好:
hg log
如何输出(可能在不同版本中发生变化)答案 0 :(得分:4)
这就是你要记录的内容。根据您的需要模拟输出,例如
hg log -l10 --template="{node|short} {date} {author}\n"
为您提供类似
的输出0c4520bbf388 2017-06-07 12:25 +0200 username <user@example.com>
结帐hg help template
了解更多模板选项。您基本上可以将模板应用于生成这类输出的所有相关命令。
介意:如果您没有按提交日期显式排序日志,它将返回您的存储库中的10个最新提交 - 这不一定反映提交时间的顺序。你可以通过额外提供一个revset并按它排序来做到这一点:
hg log --rev="sort(date('<now'))" --template="{node}\n" -l5