Почему я не могу переназначить предка наборов изменений источника, если они находятся в другой ветке? - PullRequest
2 голосов
/ 10 ноября 2010

Я хотел бы знать, почему следующий шаблон невозможен.

Создав локальную ветвь функций (minor_feature - не предназначенную для общего доступа к миру), я хотел бы перебазировать работу над нейдо кончика хорошо известной ветки (стабильной).Однако я обнаружил, что rebase не находит ничего, что можно было бы перебазировать в том случае, если стабильное состояние не прогрессировало с момента отделения от него.

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

o  branch:minor_feature
|  rev:4
|  changeset:746d8191aa5d
|
o  branch:minor_feature
|  rev:3
|  changeset:520f565ba7f2
|
@  branch:stable
|  rev:2
|  changeset:64e7c753c090
|
o  branch:stable
|  rev:1
|  changeset:3dc55a5c9971
|
o  branch:stable
   rev:0
   changeset:fbf1f426945c

$hg rebase -b minor_feature
nothing to rebase

- Спасибо, Крис Горман

Ответы [ 2 ]

1 голос
/ 10 ноября 2010

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

Я не уверен на 100%, чего вы пытаетесь достичь. Если это нужно для эффективного удаления ветки, то, пока вы не нажали, вы, вероятно, можете использовать расширение MQ. Импортируйте наборы изменений, выталкивайте все. Убедитесь, что вы обновили стабильную ветвь (которой она должна быть по умолчанию), и вставьте их все обратно.

Теперь все они должны находиться в стабильной ветке.

0 голосов
/ 10 ноября 2010

Вы можете сделать это с расширением convert . Вы бы использовали карту ветвления, чтобы перебазировать minor_feature в default. Этот файл (назовем его alldefault) будет выглядеть примерно так:

minor_branch default

Тогда команда будет просто:

$ hg convert --branchmap alldefault oldrepo newrepo

Когда это закончится, у newrepo будет именованная ветвь "rebased" поверх default ветки.

...