列出最近的 mercurial hashes
List most recent mercurial hashes
hg
是否有一种很好的方法来在不同的行中仅列出 repo 中最近提交的哈希值? hg id -i
只给我当前的提交。
等同于 hg log
中的 -l
参数,这样我就可以做类似的事情:
$ 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([=13=],length([=13=])-n+1)}'
1eb0c5a3002e
ec0db890a6c3
321c6693361e
4a1e2ca2df06
2d1ef7d57485
虽然这不是很好:
- 对
hg log
的输出方式做出假设(在不同版本中可能会发生变化)
- awk 命令对我来说有点太神秘了:)
- 不适用于 Windows(假设您正在尝试解决与 bash 选项卡完成不同的问题)
这就是您登录的目的。将输出模板化为您的需要,例如
hg log -l10 --template="{node|short} {date} {author}\n"
为您提供类似
的输出
0c4520bbf388 2017-06-07 12:25 +0200 username <user@example.com>
查看 hg help template
以获得更多模板选项。您基本上可以将模板应用于生成此类输出的所有相关命令。
注意:如果您没有按提交日期明确对日志进行排序,它将 return 您存储库中的 10 个最新提交 - 这不一定反映提交时间的顺序。您可以通过另外提供一个 revset 并按它排序来做到这一点:
hg log --rev="sort(date('<now'))" --template="{node}\n" -l5
hg
是否有一种很好的方法来在不同的行中仅列出 repo 中最近提交的哈希值? hg id -i
只给我当前的提交。
等同于 hg log
中的 -l
参数,这样我就可以做类似的事情:
$ 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([=13=],length([=13=])-n+1)}'
1eb0c5a3002e
ec0db890a6c3
321c6693361e
4a1e2ca2df06
2d1ef7d57485
虽然这不是很好:
- 对
hg log
的输出方式做出假设(在不同版本中可能会发生变化) - awk 命令对我来说有点太神秘了:)
- 不适用于 Windows(假设您正在尝试解决与 bash 选项卡完成不同的问题)
这就是您登录的目的。将输出模板化为您的需要,例如
hg log -l10 --template="{node|short} {date} {author}\n"
为您提供类似
的输出0c4520bbf388 2017-06-07 12:25 +0200 username <user@example.com>
查看 hg help template
以获得更多模板选项。您基本上可以将模板应用于生成此类输出的所有相关命令。
注意:如果您没有按提交日期明确对日志进行排序,它将 return 您存储库中的 10 个最新提交 - 这不一定反映提交时间的顺序。您可以通过另外提供一个 revset 并按它排序来做到这一点:
hg log --rev="sort(date('<now'))" --template="{node}\n" -l5