Как получить доступ к информации, связанной с объектом, из плагина Mercurial?
Я пытаюсь написать небольшое расширение 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
Вызовет функцию whichrev с установленным узлом text_file.txt
, С помощью отладчика я обнаружил, что могу получить доступ к объекту filelog, используя это:
repo.file("text_file.txt")
Но я не знаю, к чему мне обратиться, чтобы получить доступ к файлу sha1. У меня такое ощущение, что я не могу работать с нужной функцией.
Заданный путь к отслеживаемому файлу (файл может отображаться или не изменяться в соответствии с hg status
), как я могу получить его sha1 из моего расширения?
1 ответ
Объект filelog довольно низкого уровня, вы, вероятно, хотите filectx:
Объект filecontext делает доступ к данным, связанным с конкретным просмотром файлов, удобным.
Вы можете получить его через changectx:
ctx = repo['.']
fooctx = ctx['foo']
print fooctx.filenode()
Или прямо через репо:
fooctx = repo.filectx('foo', '.')
Проходить None
вместо .
чтобы получить рабочие копии.