【发布时间】:2010-12-02 00:41:23
【问题描述】:
在一个 mercurial repo 中,我可以运行 hg up {revision} 来更改我的工作目录的修订版,但是我可以运行什么命令来发现我正在查看的修订版?
【问题讨论】:
标签: mercurial
在一个 mercurial repo 中,我可以运行 hg up {revision} 来更改我的工作目录的修订版,但是我可以运行什么命令来发现我正在查看的修订版?
【问题讨论】:
标签: mercurial
这个命令:
hg parent
【讨论】:
hg parents 是 DEPRECATED,尽管在您编写此答案时可能并非如此。如果有未提交的合并,则有two parent revisions。
除了hg parents,您还可以使用hg summary 获取有关您当前状态的最重要的摘要信息。它看起来像这样:
% hg summary
parent: 13051:120eccaaa522 tip
encoding: fix typo in variable name
branch: default
commit: 2 unknown (clean)
update: (current)
mq: 20 unapplied
并一目了然地告诉我,我处于修订版 13051,我在默认分支上,并且有一个干净的工作副本(尽管有 2 个未跟踪的文件)。这是我的存储库中的提示修订,因此更新不会做任何事情。最后,我有 20 个未应用的 MQ 补丁。
【讨论】:
hg summary 缺少--template,因此无法仅提取修订版而没有其他内容。
hg identify(或简称hg id)将打印父哈希的(缩短的12个字符的标识符),如果您的工作副本中有任何未提交的修改,则会打印+。
要获取完整的哈希值,您可以改用hg identify --debug。
【讨论】:
hg parent 显示的信息多于 hg id。
hg id -i 仅打印全局哈希 id 的短(12 个字符)形式,并且由于 hg identify 缺少 --template afaics 那里没有办法只提取修订版,因为man page says 它打印了一个摘要。你也不需要hg id -n和/或hg id -i吗?
另一个选项是启用graphlog extension,然后运行hg glog。你会看到这样的输出(请记住我使用模板来更改输出):
o changeset: 200:c8c281cf0a6d
|\ branch: craig-aspinall
| | tag: tip
| | parent: 199:1a692f3b9134
| | parent: 187:2d0e0ed9d31c
| | user: Craig Aspinall
| | date: Tue Nov 23 21:36:30 2010 +1000
| | summary: Merged latest changes
| |
| o changeset: 199:1a692f3b9134
| | branch: craig-aspinall
| | parent: 123:1dc90c9b7ede
| | user: Craig Aspinall
| | date: Tue Nov 23 21:35:22 2010 +1000
| | summary: Final solutions to L04
| |
| | @ changeset: 198:78b488c2607d <==== This is where I am currently.
| | |\ branch: OJ
| | | | parent: 119:70ec3d9e4d3a
| | | | parent: 197:44bac809d37d
| | | | user: OJ Reeves
| | | | date: Tue Nov 23 20:19:07 2010 +1000
| | | | summary: Merged with the mainline
| | | |
| | | o changeset: 197:44bac809d37d
| | | | user: Tony Morris
| | | | date: Tue Nov 23 18:40:03 2010 +1000
| | | | summary: Started parallel anagrams
| | | |
| | | o changeset: 196:92241b51970b
| | | | user: Tony Morris
| | | | date: Tue Nov 23 17:52:32 2010 +1000
| | | | summary: Started parallel anagrams
| | | |
带有@ 符号的节点/修订版就是您所在的位置。
【讨论】:
由于存在--template,最具体的非弃用命令只能在需要简洁性时打印修订信息(正如问题所暗示的那样):
hg log -l 1 -b . -T '{rev}:{node|short}\n'
或者:
hg log -l 1 -b . -T '{rev}\n'
或者:
hg log -l 1 -r . -T '{rev}\n'
或者对于唯一长形式的哈希:
hg log -l 1 -r . -T '{node}\n'
-b . 或branch(.)(分支名称的点)means the current working directory branch 和-r . 表示当前工作目录修订版,即hg help revsets 和hg help revisions 中的documented。
注意如果有uncommitted merge,.(点)只显示工作组的两个父级的first parent。
【讨论】:
这也会有帮助,
hg log -v -r `hg id -i`
【讨论】: