Исправлена ​​ошибка слияния в Mercurial

В нашей конфигурации проекта Mercurial у нас есть 3 ветви в одном репозитории. Одна из них - это ветка стабильного выпуска, в которой выполняются срочные исправления ошибок, другая - ветка функций, содержащая новый код функции, а другая - ветка UAT, в которой исправления ошибок и новые функции объединены для обеспечения самой современной базы кода.,

Мы объединили целую загрузку нового кода функции в ветку UAT без каких-либо проблем. После этого мы объединили стабильную ветвь с исправлениями ошибок в ветку UAT, но это, похоже, приводит к удалению нового кода функции. Я обнаружил, что эта проблема была вызвана тем, что какое-то время назад кто-то сливал UAT в стабильный (чего не должно было случиться!!). Теперь, когда я пытаюсь объединить исправления ошибок в UAT, он удаляет весь новый код функции.

Есть ли способ убрать эффекты слияния из UAT в стабильный, сохранив при этом исправления ошибок, которые являются потомками после этого "плохого слияния"? Я попытался отказаться от слияния, но, похоже, это никак не отразилось. Могу ли я сделать полосу и заново добавить необходимые наборы изменений обратно?

Заранее спасибо.

1 ответ

Решение

На самом деле мне удалось исправить это самому путем проб и ошибок.

Сначала вам нужно включить расширения трансплантата и mqMerge в вашем файле mercurial.ini. Добавьте строки после строк под заголовком расширения

   transplant=
   mq=

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

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

    hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"

Повторите команду трансплантации для всех необходимых наборов изменений. Ouila!

NB. Если вы используете центральный репозиторий, вам нужно будет также удалить поврежденное слияние / смену, иначе ваше локальное хранилище сочтет, что у вас есть выдающиеся наборы изменений.

Другие вопросы по тегам