【发布时间】:2011-08-22 08:01:23
【问题描述】:
如果我在一个文件上运行 git hash-object,我可以得到它的 SHA,如果我用ls-tree 环顾四周,我可以看到某个对象在某个版本的签名。如果我使用 Mercurial 对一个文件进行 3 次提交,我能否看到该对象在第 2 次提交时的哈希值是多少?
我可以看到对象现在有什么哈希吗?就算修改了?
【问题讨论】:
如果我在一个文件上运行 git hash-object,我可以得到它的 SHA,如果我用ls-tree 环顾四周,我可以看到某个对象在某个版本的签名。如果我使用 Mercurial 对一个文件进行 3 次提交,我能否看到该对象在第 2 次提交时的哈希值是多少?
我可以看到对象现在有什么哈希吗?就算修改了?
【问题讨论】:
Mercurial 内部工作方式不同。您可以看到“changeset”的哈希值 - 在 mercurial 中没有对象的“树”,只有很多带有一系列变更集的文件。
hg log 允许您查看哈希和相关文件。在您的情况下,如果您也想要文件列表,那将是 hg log -r -2(显示第二次最后提交)或 hg log -r -2 -v。
【讨论】:
hg update 将文件更新到某个版本。使用hg log --template "{node}" --limit 1 -r revision filename 获取文件特定修订版的哈希值。无需“还原”。而不是恢复/更新,看看hg qimport,它可以从最近的几次提交中创建一个补丁。
您在寻找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
【讨论】: