Нет хорошего способа выбора версий вишни в Mercurial (так называется ваш предложенный рабочий процесс). Есть несколько не очень хороших способов сделать это: экспорт + импорт (или удобная оболочка для экспорта + импорта, называемая трансплантатом), но недостаток в том, что у вас есть один и тот же набор изменений с разными хэшами в нескольких репозиториях, без толку способ представить это, если / когда вы пытаетесь переместить изменения снова.
Лучше изменить ваш рабочий процесс так, чтобы, когда вы захотите переместиться через изменение, у вас все в порядке с перемещением по всем его предкам, и вы делаете это, сознательно выбирая предков ревизии.
Например, если вы исправляете ошибку, которая находится в репозитории разработки, и все три «других» репозитория не просто изменяют родительскую ревизию изменения tip
репозитория разработки. Сначала выполните hg update -r THE_REVISION_WHERE_THE_BUG_WAS_ADDED
, затем исправьте ошибку, а затем подтвердите. Вы увидите сообщение с надписью new head created
, что ожидается.
Теперь вы получили это исправление как наборы изменений, единственным родителем которых является набор изменений, в котором была введена ошибка - которая должна существовать в 3 других репозиториях, иначе они не будут иметь ошибки. Так что теперь вы можете pull
этот новый набор изменений в «3» других репозиториях, не принося с собой все остальное в разработку. И затем вы делаете быстрый hg merge
в каждом из этих четырех репозиториев, смешивая исправление ошибки с их развертываемым tip
.
Получить представление о том, как структурировать репозитории с общей функциональностью, но с настройками в каждом, может быть немного сложно, но если вы правильно структурируете вещи, вы можете выполнить все ваши миграции внутри репо, используя push, pull и merge, и никогда не придется исправлять ошибку дважды, иметь один и тот же код в разных наборах изменений или заново выполнять настройку репозитория.
Как примечание, команда bisect отлично справляется с ответом на вопрос «где была введена эта ошибка», прежде чем кто-то начнет ее исправлять.