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。デバッガーを使用すると、これを使用して filelog オブジェクトにアクセスできることがわかりました。

repo.file("text_file.txt")

しかし、ファイルの sha1 に到達するために何にアクセスすればよいかわかりません。適切な関数で作業していないのではないかと感じています。

追跡されたファイルへのパス (ファイルは の下で変更されたように表示される場合と表示されない場合があります) が与えられた場合hg status、拡張子から sha1 を取得するにはどうすればよいですか?

4

1 に答える 1

1

filelog オブジェクトはかなり低レベルです。おそらく filectx が必要です。

filecontext オブジェクトは、特定のファイル リビジョンに関連するデータへのアクセスを便利にします。

changectx を介して取得できます。

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

またはレポから直接:

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

作業コピーのものを取得するNone代わりに渡します。.

于 2011-08-29T16:31:57.883 に答える