1

我正在尝试编写一个小的 Mercurial 扩展,给定存储在存储库中的对象的路径,它会告诉您它所在的修订版。到目前为止,我正在编写来自WritingExtensions 文章的代码,我有这样的东西:

cmdtable = {
    # cmd name        function call
    "whichrev": (whichrev,[],"hg whichrev FILE")
}

并且 whichrev 函数几乎没有代码:

def whichrev(ui, repo, node, **opts):
    # node will be the file chosen at the command line
    pass

所以,例如:

hg whichrev text_file.txt

将在 node 设置为 的情况下调用 whichrev 函数text_file.txt。通过使用调试器,我发现我可以通过以下方式访问文件日志对象:

repo.file("text_file.txt")

但我不知道我应该访问什么才能访问文件的 sha1。我感觉我可能没有使用正确的功能。

给定跟踪文​​件的路径(该文件可能会或可能不会显示为已修改hg status),我如何从我的扩展程序中获取它的 sha1?

4

1 回答 1

1

文件日志对象非常低级,您可能需要一个 filectx:

文件上下文对象可以方便地访问与特定文件修订相关的数据。

您可以通过 changectx 获得一个:

ctx = repo['.']
fooctx = ctx['foo']
print fooctx.filenode()

或直接通过 repo:

fooctx = repo.filectx('foo', '.')

通过None而不是.获取工作副本。

于 2011-08-29T16:31:57.883 回答