График выглядит так, поскольку ревизии упорядочены по номерам ревизий. Основной репозиторий имеет упорядоченные и пронумерованные ревизии:
0 Imported initial repo.
1 Trivial change to also echo b.
2 Added another echo for c.
3 Echo for d.
4 Echo for e.
Это отражает порядок, в котором наборы изменений были добавлены в хранилище. Репозиторий ветвей функций имеет следующий порядок:
0 Imported initial repo.
1 Trivial change to also echo b.
3 Added another echo for c.
4 Automatic merge...
5 Echo for d.
6 Automatic merge...
7 Echo for e.
8 Automatic merge...
Опять все хорошо. Но когда вы вытягиваете ветку объектов в основной репозиторий, добавляются только отсутствующие наборы изменений. Результат в основном таков:
0 Imported initial repo.
1 Trivial change to also echo b.
2 Added another echo for c.
3 Echo for d.
4 Echo for e.
5 Refactored echos to print.
6 Automatic merge...
7 Automatic merge...
8 Automatic merge...
и график отражает это.
Как вы заметили, с репозиторием все в порядке - это всего лишь артефакт того, как наборы изменений упорядочены на диске. Если вы хотите, вы можете поменять репозиторий с хорошим графиком на тот, что с уродливым графиком, поскольку теперь они содержат одинаковые наборы изменений. Просто не забудьте перенести все важные настройки из .hg/hgrc
(скопируйте файл из клона с уродливым графиком).
Кстати, когда я смотрю на график в моем клоне http://hg.intevation.org/mercurial/crew/ (ветка разработки для Mercurial) и сравниваю его с графиком в свежем клоне https://www.mercurial -scm. org / repo / hg (основная ветка для Mercurial) вижу такое же явление.