не удается выполнить отправку в удаленное хранилище после слияния

#mercurial #merge #push

#mercurial #слияние #толкать

Вопрос:

разветвление —

 [default]$ hg branch talks
[talks]$ <... some commits ...>
[talks]$ hg update default
  

слияние обратно —

 [default]$ hg merge talks
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
  

отправка в удаленное хранилище —

 [default]$ hg commit -m "merging talks to default"
[default]$ $ hg push
abort: push creates new remote branches: talks!
(use 'hg push --new-branch' to create new remote branches)
  

Дальнейшее расследование показало, что удаленное хранилище не хочет, чтобы у меня было несколько головок на удаленном конце. Но я только что выполнил слияние, чтобы объединить две головки в одну, не так ли?

График из hg serve также, похоже, согласен со мной (я надеюсь) введите описание изображения здесь

Тем не менее, я также вижу две головки из hg heads

 [default]$ hg branches
default                        9:85752ecd6326
talks                          8:2b00714d76d5 (inactive)
  

Ответ №1:

Решение содержится в сообщении об отмене: use 'hg push --new-branch' . Вы создали именованную ветвь с именем talks , поэтому ей нужен этот дополнительный переключатель, независимо от того, объединили ли вы именованную ветвь обратно по умолчанию.

Ответ №2:

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

Mercurial отказывается выполнять запросы, которые добавляют новые глобальные названия ветвей в отправляемый репозиторий, потому что это очень редко то, что вы действительно хотите сделать. hg push --new-branch сообщит Mercurial, что да, вы действительно собираетесь это сделать.

Две главы, которые вы видите, вводят в заблуждение. Обратите внимание, что один заголовок указан как «(неактивный)». Это просто означает, что это последнее изменение в глобальной ветке, но не фактический заголовок. Вы часто хотите видеть заголовки ветвей, даже если у этих заголовков на самом деле есть дочерние элементы и они на самом деле не являются заголовками.

В качестве небольшого отступления… Некоторое время назад я написал код, который добавил эту функцию в команду ‘heads’. 🙂