Смущает то, что флаг --new-branch
не действует при нажатии на ветви функций (также известные как anynomous ветви). Анонимная ветка выглядит так:
... [a] --- [b] --- [c] <- the servers head on default
\
[x] --- [y] <- my feature branch on default
Все ревизии включены default
, поэтому теперь у вас есть две головы на default
. Когда вы нажмете, вы создадите две головы на сервере - но Mercurial прерывает это с предупреждением, которое вы видите. Он прерывается, поскольку наличие нескольких головок на сервере сбивает с толку: когда вы hg clone
, ваша рабочая копия будет обновлена до одной из них, почти случайно.
Флаг --new-branch
предназначен только для с именем branch . Mercurial обычно прерывается, если вы отправляете новую именованную ветку в удаленный репозиторий. Добавление флага --new-branch
- это то, как вы говорите ему идти вперед.
К сожалению, у нас нет выделенного --create-new-feature-branch
флага. У нас есть только флаг --force
, который сообщает Mercurial, что нужно создать две головы в удаленном хранилище. Недостатком --force
является то, что он отменяет все проверки безопасности: вы можете вставить три или более новых голов с этим флагом, и вы даже можете вставить в несвязанный репозиторий.
Поэтому вы должны использовать hg outgoing
, чтобы дважды проверить, что вы собираетесь нажать.
Я писал выше, что несколько головок на сервере сбивают с толку, поскольку новый клон будет обновлен до случайной головы. Чтобы избежать путаницы, вы можете присвоить названия веткам элементов, добавив в закладки их Вы все равно будете обновлены до случайного заголовка, но hg bookmarks
покажет вам доступные ветви функций, и вы сможете затем перейти к нужному. Так что, если вы используете такой рабочий процесс, тогда продолжайте с hg push -f
.