2012-05-16 3 views
0

Я столкнулся с интересной ситуацией, которую я не знаю, как описать. Итак, я вот скриншот (обратите внимание, что здесь работают два программиста с центральным репозиторием, которые оба синхронизируются):Меркуриальная голова, два отклонения

Изображение слева обновляется до ядра другого программиста (теперь это голова) и изображение справа обновляется до моего ядра до слияния с dev.

http://d.pr/i/aorXhttp://d.pr/i/7d7q

Как вы можете видеть, у меня есть одна Core ветвь #372 сливаясь в Dev. Другой программист забыл объединиться с моими изменениями в #372 (который я уже нажал в центральный репозиторий до того, как это изменилось с 375 и далее) и продолжилось.

Итак, теперь у меня есть основная ветвь, которая слилась с dev, и вроде как левая голова. Другое ядро ​​программиста теперь будет тем, с чего я начну. Это не проблема. В чем проблема - это увидеть два ядра и грязное дерево с запутанным ветвлением.

Что я могу сделать, чтобы в итоге появилась только одна ветвь? Или это ok иметь?

+0

Как ответы Павла, так и Дэвида ниже дают хорошую работу, объясняя, как нормальные вещи выше. Сделайте небольшой поиск в Google, чтобы понять разницу между терминами «голова» и «топологическая голова», а также между «названной веткой» и «анонимной ветвью» в контексте Mercurial, и все будет в порядке. Попробуйте 'hg heads -topo' по сравнению с' hg heads'. Не беспокойтесь о том, как выглядит ваша история, вы всегда можете объединиться до нескольких голов, как вам нужно. –

ответ

4

Как вы можете видеть, у меня есть одна ветвь ядра # 372, сливаясь с Dev. Другой программист забыл объединиться с моими изменениями на # 372 (который я уже нажал в центральный репозиторий до того, как это изменится с 375 и далее) и продолжилось.

Это не то, что я вижу. # 372 является родителем # 373 с обеих сторон. Оба графика, если вы удаляете # 381 + и # 372 +, одинаковы. Они были сделаны иначе, потому что родитель текущей рабочей копии отличается.

Конечно, это выглядит немного странно, но здесь нет никаких проблем. После # 372 +, он должен быть объединен с # 381 (или как бы то ни было текущая головка ядра к тому времени) в какой-то момент, но это ничего исключительного.

+0

Что делать, если у меня нет никаких изменений в 372+, я должен оставить его как есть. И затем, если у меня появятся некоторые «основные» изменения, следует начать с 372+ или 381+? Я хочу снова вернуться к _one_ core branch.Должен ли я явно внести некоторые изменения в 372+, чтобы я мог объединить его с основной головой? Приносим извинения, если моя формулировка сбивает с толку, так как я смущен! – Samaursa

+0

Хорошо, тогда вы просто не обновили последний код. 'hg update Core 'обновит вашу рабочую копию до последней версии в ветке' Core'. # 372 + перестанет существовать (на самом деле он не существует, это артефакт любого инструмента, который вы используете для рисования графиков). Я думаю, что ревизия, в которую вы попадаете, будет зависеть от того, как было выполнено слияние в # 382, ​​и является ли теперь глава Core или № 381. –

2

Прямо сейчас, на самом деле имеет Core0 топологические головки поскольку ревизии 381 и 372 оба были объединены с dev. На вашем графике вы видите, что длинная строка простирается от набора изменений 372, потому что ваш рабочий каталог находится в этом наборе изменений прямо сейчас. Строка указывает, что любые сделанные вами коммиты будут дочерними из 372. Рабочий каталог другого программиста находится на changeet 381, поэтому его график выглядит по-другому. Как только вы перейдете на 381, ваш график будет выглядеть так же, как и другой.

Так что, чтобы ответить на ваш вопрос, это не будет проблемой, так как Coreветви ветви все были объединены в dev. Кроме того, если вы набрали несколько топологических головок на Core, Mercurial предупредит вас об этом, когда вы потянете в новую голову.

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