2013-02-12 6 views
3

У меня есть «основной» репозиторий, я клонирую его и вношу некоторые изменения в клон. В то же время в «main» есть другие изменения, поэтому я вытаскиваю их и объединяю их в свой клон. Я делаю больше изменений в клоне и объединяю любые другие новые изменения с «main». Это дает мне этот график:Как сохранить меркуриальный граф «flat»

enter image description here

Когда я закончу свою работу в клоне, я нажимаю на основной репозиторий и теперь граф в «основной» выглядит следующим образом:

enter image description here

Я знаю, что они топологически одинаковы, но для меня первый - более ясный (это очень простой случай, но все может усложниться).

Есть ли способ предотвратить это? Я нашел this question о переупорядочении графика после факта, но я подумал, может быть, в моем рабочем процессе есть проблема или что-то, что я могу изменить, чтобы предотвратить это.

ответ

4

Проблема заключается в том, что граф сортируется по номеру ревизии, а не по дате пересмотра. Это эффективно сортируется по дате/времени, когда изменения появились в текущем репозитории. В проекте thg есть нерешенная проблема, позволяющая сортировать список по дате пересмотра, но один из разработчиков сказал, что для этого изменения потребуется связать граф, поскольку он считает, что повторная запись графа будет слишком сложной для слишком мало выигрыша (вопрос here).

Существует не рабочий процесс, связанный с объединением, который я знаю, чтобы исправить его, потому что изменения не будут находиться в одном порядке в разных хранилищах, если работа выполняется на нескольких репо.

Один из способов аккумулировать дерево - использовать rebase вместо merge после вытаскивания ваших изменений. Это приведет к единственной ветке без каких-либо слияний, поскольку она переписывает историю, чтобы она выглядела так, как если бы ваши версии draft были реализованы после изменений, которые вы только что вытащили. Если вы хотите прочитать rebase, эта информация - here.

+0

Я знаю о «rebase», но я бы предпочел не менять историю в целом. – MikMik