【问题标题】:What's the Mercurial equivalent for git hash-object and how do I get the hash of a certain commit?git hash-object 的 Mercurial 等价物是什么?如何获取某个提交的哈希?
【发布时间】:2011-08-22 08:01:23
【问题描述】:

如果我在一个文件上运行 git hash-object,我可以得到它的 SHA,如果我用ls-tree 环顾四周,我可以看到某个对象在某个版本的签名。如果我使用 Mercurial 对一个文件进行 3 次提交,我能否看到该对象在第 2 次提交时的哈希值是多少?

我可以看到对象现在有什么哈希吗?就算修改了?

【问题讨论】:

    标签: git object mercurial hash


    【解决方案1】:

    Mercurial 内部工作方式不同。您可以看到“changeset”的哈希值 - 在 mercurial 中没有对象的“树”,只有很多带有一系列变更集的文件。

    hg log 允许您查看哈希和相关文件。在您的情况下,如果您也想要文件列表,那将是 hg log -r -2(显示第二次最后提交)或 hg log -r -2 -v

    【讨论】:

    • 我需要使用 API 来获取哈希吗?我想做一个脚本来告诉我文件的修订版本。例如:我将文件恢复到第二次提交,运行脚本并查看版本。
    • 只是为了确保我们谈论的是同一件事:在 Mercurial 中,您使用 hg update 将文件更新到某个版本。使用hg log --template "{node}" --limit 1 -r revision filename 获取文件特定修订版的哈希值。无需“还原”。而不是恢复/更新,看看hg qimport,它可以从最近的几次提交中创建一个补丁。
    【解决方案2】:

    您在寻找hg manifest --debug 吗?它打印当前修订版中的所有文件及其对应的 nodeid。

    $ hg man --debug | head
    9d2ea05fa708cb035dc716c071f0ad00c3449e1e 644   .hgignore
    5199ce4ea50cd49c1757bf113c9239f4bf9e9de6 644   .hgsigs
    6a6af229d3f6ce57cb7602f807069bf4f5febb32 644   .hgtags
    7c8afb9501740a450c549b4b1f002c803c45193a 644   CONTRIBUTORS
    02c5479e672e6a43116c48889101884f4b07ec25 644   COPYING
    0fd39b23c59f01ef46a2805f1e9b8529246ea294 644   Makefile
    780f5a706681ff4efab75c2beae6ee56f710a50b 644   README
    

    【讨论】:

    • 谢谢。正是我需要的:)
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2021-08-26
    • 1970-01-01
    相关资源
    最近更新 更多