Как вы, наверное, знаете, для Mercurial нет стабильного API уровня Python . Командная строка действительно является единственным поддерживаемым API (если только вы не используете библиотеку-оболочку, такую как JavaHg или python-hglib ).
Итак, в командной строке вы запустите
$ hg log -r "ID::"
чтобы получить все наборы изменений после ID
. Оператор ::
дает вам потомков, используйте ID:
, если вы просто хотите получить наборы изменений с большим номером ревизии, даже если они не являются потомками ID
.
Используя JavaHg, вы можете создать экземпляр Repository
объекта и использовать LogCommand
:
List<Changeset> changesets = LogCommand.on(repo).rev(id + "::").execute();
Затем можно выполнить итерацию по списку changesets
. С python-hglib это выглядит как
changesets = client.log(id + "::")
Наконец, если вы импортируете код Mercurial напрямую, вы можете сделать
ctxs = repo.set(id + "::")
, чтобы получить итератор, выдающий changectx
объектов. Хотя мы не даем никаких гарантий относительно Python API, я ожидаю, что он также будет очень стабильным.
Вышесказанное сфокусировано на поиске по номеру ревизии или номеру ревизии. Если вы хотите выполнить поиск по дате, вам нужно вызвать эквивалент
$ hg log -d '>YOUR-DATE'
В JavaHg вы можете просто использовать метод date(String date)
для LogCommand
, в python-hglib вы задаете ключевой аргумент date
, а внутри вы используете предикат revset date
- см. hg help revsets
.