【问题标题】:How can I find my working revision in mercurial如何在 mercurial 中找到我的工作修订版
【发布时间】:2010-12-02 00:41:23
【问题描述】:

在一个 mercurial repo 中,我可以运行 hg up {revision} 来更改我的工作目录的修订版,但是我可以运行什么命令来发现我正在查看的修订版?

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    这个命令:

    hg parent
    

    【讨论】:

    • @pyfunc:我在糟糕的验证码上浪费了大约一分钟,否则我可能是第一个 :-)
    • 没有问题。最好的部分是我在我的 mercurial repo 上做了一些事情,我把这两个任务搞混了。 :)
    • hg 手册页显示 hg parentsDEPRECATED,尽管在您编写此答案时可能并非如此。如果有未提交的合并,则有two parent revisions
    • 为什么这个命令叫做“parent”?它显示有关当前提交的信息,而不是当前提交的父级。
    • @Jamie 命名很难:-D
    【解决方案2】:

    除了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 补丁。

    【讨论】:

    • 20 个未应用的补丁?!队列时间到了?
    • 不,我失去了 qqueue 的概述。相反,我只是将补丁分成小批量:4 个补丁用于功能 X,5 个补丁用于功能 Y,等等。如果我想处理功能 X,然后我使用 TortoiseHg 日志查看器将相关补丁移到队列中的前面。
    • 但这不是问题的最具体答案,因为由于hg summary 缺少--template,因此无法仅提取修订版而没有其他内容。
    【解决方案3】:

    hg identify(或简称hg id)将打印父哈希的(缩短的12个字符的标识符),如果您的工作副本中有任何未提交的修改,则会打印+

    要获取完整的哈希值,您可以改用hg identify --debug

    【讨论】:

    • 就像注释一样,默认情况下,hg parent 显示的信息多于 hg id
    • 但这不是问题的最具体答案,因为 afaik hg id -i 仅打印全局哈希 id 的短(12 个字符)形式,并且由于 hg identify 缺少 --template afaics 那里没有办法只提取修订版,因为man page says 它打印了一个摘要。你也不需要hg id -n和/或hg id -i吗?
    • @ShelbyMooreIII 12 个十六进制字符为 6 个字节,即 48 位,因此有 2^48 个可能的短标识符。根据生日悖论,大约需要 1.2 * sqrt(2^48) = 大约 200 万次提交才能获得 50% 的碰撞概率。短标识符几乎总是可以的。
    • Correct math 表示 50% 的碰撞概率大约为 1500 万。但是谁会使用一个失败概率为 50% 的系统。采取更合理的安全边际,即百万分之一的失败机会,那么提交的数量会下降到不到 25,000 次。可接受的概率水平取决于应用。例如,12 位十六进制是否记录在变更集 cmets 中。请注意,在 DVCS 中,重要的不仅仅是我们的本地提交,还可能是每个人的实验。避免“wtf”惊喜。
    • @ShelbyMooreIII 很好,我已经修改了我的答案,以从 hg identify 获取完整的哈希值。
    【解决方案4】:

    另一个选项是启用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
    | | | |
    

    带有@ 符号的节点/修订版就是您所在的位置。

    【讨论】:

    • 也许这个输出是伪造的,但我不确定这个答案是否应该包含人名。
    【解决方案5】:

    由于存在--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 revsetshg help revisions 中的documented

    注意如果有uncommitted merge.(点)只显示工作组的两个父级的first parent

    【讨论】:

      【解决方案6】:

      这也会有帮助,

      hg log -v -r `hg id -i`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 2020-12-22
        • 2016-08-09
        • 1970-01-01
        • 2019-02-15
        相关资源
        最近更新 更多