Ответ 1
Если у вас Mercurial 1.6 или более поздняя версия, вы можете использовать revsets:
hg log --rev "ancestors(.)"
hg log --rev "reverse(ancestors(.))" # Output in the same order as vanilla hg log
Одна вещь, которую я действительно пропускаю, переходя от svn к mercurial, заключается в том, что команда Mercurial hg log настаивает на том, чтобы показать всю историю, а не только историю моей текущей рабочей ревизии.
Например, я работаю над репо с большим количеством проверок для другой главы в моей ветке, а первые 20 записей журнала не имеют ничего общего с моей линией разработки.
В hg log есть множество опций, но...
--rev показывает, что исправленная просьба, но не ее предки
-branch не работает, потому что активная головка находится в той же ветке, что и моя.
--prune удаляет всех предков другой головы, даже если они также являются моими предками
--user не работает, потому что я не единственный пользователь в этой линии разработки
Я думаю, я мог бы полоса hg, но это похоже на перебор...
Мысли?
Райан
Если у вас Mercurial 1.6 или более поздняя версия, вы можете использовать revsets:
hg log --rev "ancestors(.)"
hg log --rev "reverse(ancestors(.))" # Output in the same order as vanilla hg log
Я знаю, что наборы изменений в наши дни все в ярости (hg log -r "::."
), но малоизвестный флаг --follow
позволяет вам делать то, что вы хотите, используя любую версию Mercurial. hg log
help говорит (выделение выделено жирным шрифтом):
[...] Используйте
-f/--follow
с именем файла, чтобы следить за историей переименований и копии.--follow
без имени файла будут отображаться только предки или потомки исходной версии. [...]Если не указан диапазон версий, значение по умолчанию - подсказка: 0 , если
--follow
не является set, и в этом случае родитель рабочей директории используется как стартовый ревизия. [...]
Итак, другими словами, добавление -f
сделает трюк для вас. Вы можете добавить -f
к своим значениям по умолчанию:
[defaults]
log = -f
или еще лучше, вы можете создать псевдоним для этого:
[alias]
logf = log -f
Это позволяет избежать изменения основной команды типа hg log
, которая рано или поздно будет путать вас или ваших коллег.
Как сказал Niall C, вы можете сделать это из командной строки с помощью revsets:
hg log --rev "ancestors(.)"
Кроме того, если у вас есть TortoiseHg, вы можете отфильтровать график ревизий в проводнике репозитория с помощью переключателей с надписью "Все", "Tagged", "Ancestry", "Parents", "Heads", "Merges" и т.д. чуть выше вашей истории. В этом случае вы выберете версию, чье происхождение вас интересует, а затем выберите опцию "Ancestry".