2011-12-15 7 views
2

Я хочу получить все коммиты с их набором изменений после определенного идентификатора фиксации или времени. Есть ли какой-либо прямой способ сделать это с помощью Mercurial API?Как получить историю изменений между конкретным временным интервалом или после определенной ревизии или зафиксировать идентификатор до последнего, используя Mercurial API?

ответ

1

Как вы, наверное, знаете, есть no stable Python-level API для Mercurial. Командная строка на самом деле является единственным поддерживаемым API (если вы не используете библиотеку обертки, например JavaHg или python-hglib).

Так в командной строке будет работать

$ hg log -r "ID::" 

, чтобы получить все ревизии после ID. Оператор :: дает вам потомки, используйте ID:, если вы просто хотите, чтобы ревизии с более высоким номером ревизии, даже если они не являются потомком ID.

Использование JavaHg, вы бы создать экземпляр объекта Repository и использовать LogCommand:

List<Changeset> changesets = LogCommand.on(repo).rev(id + "::").execute(); 

Вы можете перебирать changesets списка. С питона-hglib это выглядит как

changesets = client.log(id + "::") 

Наконец, если вы импортировать Mercurial код непосредственно вы можете сделать

ctxs = repo.set(id + "::") 

, чтобы получить итератор, дающую changectx объектов. Хотя мы не даем никаких гарантий относительно API Python, я ожидаю, что это тоже будет очень стабильным.

Вышеуказанное сосредоточено на поиске идентификатора набора изменений или номера версии. Если вы хотите, для поиска по дате, то вам нужно позвонить эквивалент

$ hg log -d '>YOUR-DATE' 

В JavaHg вы можете просто использовать метод date(String date) на LogCommand, в питон-hglib установить аргумент date ключевое слово, и внутренне вы используете предикат обрезания date - см. hg help revsets.

 Смежные вопросы

  • Нет связанных вопросов^_^