Как получить список наборов изменений между двумя ревизиями, используя внутренний API Mercurial? - PullRequest
0 голосов
/ 05 октября 2011

Я хочу проверить имена пользователей в pre-commit-hook.Из командной строки то, что я хочу достичь, выглядит следующим образом:

hg log -r "$HG_NODE:tip" --template "{author}\n"

Как мне добиться того же с помощью внутреннего API Mercurial?

1 Ответ

3 голосов
/ 05 октября 2011

Предполагая, что вы уже выяснили, как получить объект репо, с помощью стабильной версии, которую вы можете сделать:

start = repo[node].rev()
end = repo['tip'].rev()

for r in xrange(start, end + 1):
    ctx = repo[r]
    print ctx.user()

В ветке разработки вы можете сделать это:

for ctx in repo.set('%s:tip', node): # node here must be hex, use %n for binary
    print ctx.user()

Также обратите внимание, что «узел :: наконечник» (две двоеточия) может быть более полезным определением «между»: оно включает всех потомков узла и всех предков наконечника, а не просто числовое упорядочение.

Наконец, убедитесь, что вы прочитали все предостережения об использовании внутреннего API здесь:

https://www.mercurial -scm.org / вики / MercurialApi

... и вместо этого рассмотрите возможность использования python-hglib:

https://www.mercurial -scm.org / вики / CommandServer

...