Почему я не могу переназначить предка наборов изменений источника, если они находятся в другой ветке?
Я хотел бы знать, почему следующий шаблон невозможен.
Создав локальную ветку объектов (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 ответа
Rebase предназначен исключительно для изменения происхождения изменений. Как вы заметили, вы не меняете родословную здесь. Ветви не включены в вычисление предков.
Я не уверен на 100%, чего вы пытаетесь достичь. Если это нужно для эффективного удаления ветки, то, пока вы не нажали, вы, вероятно, можете использовать расширение MQ. Импортируйте наборы изменений, выталкивайте все. Убедитесь, что вы обновили стабильную ветвь (которой она должна быть по умолчанию), и вставьте их все обратно.
Теперь они все должны быть в стабильной ветке.
Вы можете сделать это с помощью расширения convert. Вы бы использовали карту ветвления, чтобы перебазировать minor_feature
в default
, Этот файл (мы будем называть его alldefault
) будет выглядеть примерно так:
minor_branch default
Тогда команда будет просто:
$ hg convert --branchmap alldefault oldrepo newrepo
Когда это закончится, newrepo будет иметь именованную ветвь "rebased" поверх default
ветка.