Может ли журнал hg показывать только предков данной ревизии? - PullRequest
15 голосов
/ 07 октября 2010

Одна вещь, которую я действительно скучаю по переходу с svn на mercurial, это то, что команда mergrial hg log настаивает на отображении всей истории, а не только истории моей текущей рабочей ревизии.

Например, я работаю над репо с множеством проверок на другую голову в моей ветке, и первые 20 записей журнала не имеют ничего общего с моей линией разработки.

Существует несколько вариантов журнала hg, но ...
--rev показывает запрашиваемую ревизию, но не ее предков
--branch не работает, потому что активная головав той же ветке, что и у меня
--prune удаляет всех предков другой головы, даже если они тоже мои предки
--user не работает, потому что я не единственный пользователь в этой строкеразвитие

Полагаю, я мог бы раздеться, но это кажется излишним ...

Мысли?
Райан

Ответы [ 3 ]

23 голосов
/ 07 октября 2010

Если у вас Mercurial 1.6 или новее, вы можете использовать revsets , чтобы сделать это:

hg log --rev "ancestors(.)"
hg log --rev "reverse(ancestors(.))"  # Output in the same order as vanilla hg log
18 голосов
/ 14 октября 2010

Я знаю, что ревизионные наборы сейчас в моде (hg log -r "::."), но малоизвестный флаг --follow позволяет вам делать то, что вы хотите, используя любую версию Mercurial. hg log help говорит (выделение жирным шрифтом):

[...] Используйте -f/--follow с именем файла для отслеживания истории при переименованиях и копии. --follow без имени файла покажет только предков или потомки начальной ревизии. [...]

Если диапазон ревизий не указан, по умолчанию используется подсказка: 0 , если --follow не установить, в этом случае родительский рабочий каталог используется в качестве исходного редакция. [...]

Другими словами, добавление -f поможет вам. Вы можете добавить -f к вашим значениям по умолчанию:

[defaults]
log = -f

или еще лучше, вы можете создать псевдоним для этого:

[alias]
logf = log -f

Это позволяет избежать изменения основной команды, такой как hg log, что, вероятно, рано или поздно запутает вас или ваших коллег.

1 голос
/ 07 октября 2010

Как сказал Найл С, вы можете сделать это из командной строки, используя revsets:

hg log --rev "ancestors(.)"

Кроме того, если у вас есть TortoiseHg, вы можете отфильтровать граф ревизий в проводнике репозитория, используя переключатели, отмеченные«Все», «С метками», «Родословная», «Родители», «Головы», «Слияния» и т. Д. Чуть выше вашей истории.В этом случае вы должны выбрать ревизию, происхождение которой вас интересует, а затем выбрать опцию «Родословная».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...