Перезапись ветки по умолчанию в Mercurial

Скажем, у меня была функциональная ветка под названием feature_x, над которой я работал, затем были отобраны наборы изменений и перенесены в значения по умолчанию, после чего ветка была закрыта. Не лучший поток, но это Mercurial, так что нет возможности изменить историю.

Теперь я собираюсь снова поработать над функцией X, и я чувствую, что повторное использование ветки feature_x будет менее запутанным. Однако, если я снова открою эту ветку и солью с ней default, у меня возникнут две проблемы. Первые конфликты слияния, вторые изменения, которые были изменены в этой ветке, но так и не слились со стандартными. Так что я хотел бы иметь чистый лист, ветку feature_x, но с точной копией того, что сейчас находится в default. Есть ли более чистый способ сделать это, чем создание новой ветки, которая будет скрывать имя?


person vartec    schedule 12.06.2014    source источник


Ответы (1)


Я думаю, что лучше всего начать новую ветвь текущей вершины default под названием feature_x2 или feature_y и оставить прошлое в прошлом.

Но вот еще несколько вариантов:

  1. Ограничена ли старая ветка feature_x локально только вашим репо или она была нажата? Если первое, вы можете hg strip его и снова запустить ветку в текущем default.

  2. Если имя feature_x действительно важно, вы можете выполнить слияние по умолчанию с ним, используя внутренний объединить инструменты и заставить его точно отражать ветку по умолчанию, выполнив

    hg merge -r default --tool internal:other
    
  3. Или вы можете просто зафиксировать копию (файловой системы) default поверх кончика branch_x. Тогда вы могли бы продолжить свой веселый путь по этой ветке.

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

person Edward    schedule 12.06.2014