Mercurial через TortoiseHg - объедините названную ветку, затем закройте ее
У меня есть именованная ветвь NewFeature, которую я отключил от ветки по умолчанию. Я сделал пару коммитов для этой ветки, и теперь я хотел бы объединить ее, чтобы присоединиться к ветке по умолчанию.
Теперь (каждая буква является фиксацией):
default: A---B
NewFeature: \--C---D
Что мне нужно:
default: A---B-----------E
NewFeature: \--C---D--/
Я попытался щелкнуть правой кнопкой мыши по каталогу и выбрать "Hg Commit...". Затем я выбрал "Закрыть текущую именованную ветвь". Я получил эту ошибку: abort: can only close branch heads
Я также искал опцию "закрыть ветку" в проводнике репозитория, но ничего не нашел.
Может ли кто-нибудь помочь?
Спасибо заранее!
Изменить: я отправил issue в TortoiseHg
Ответы
Ответ 1
Чтобы объединиться, вам нужна чистая рабочая копия - никаких незафиксированных изменений. Слияние будет помещено в рабочую копию для просмотра, а затем вы завершите рабочую копию для "завершения" слияния.
Если у вас есть незафиксированные изменения, которые вы не готовы совершить, вы можете временно приостановить эти изменения (если у вас есть соответствующее расширение) или проверить новую рабочую копию в другом месте для использования для слияния.
Использование проводника репозитория:
-
Update
рабочая копия в rev B
.
-
Выберите строку rev D
в истории изменений.
-
Щелкните правой кнопкой мыши на rev D
и выберите Merge with...
. Диалог должен показать rev B
должен быть локальным rev и D
должен быть другим rev.
-
Нажмите Merge
в диалоговом окне слияния и разрешите любые конфликты, если они есть.
До сих пор в репозитории ничего не было изменено - ваше слияние находится в рабочей копии. Поэтому, если что-то не так, вы можете отменить слияние, вернуть рабочий каталог и начать работу позднее или после внесения каких-либо дополнительных изменений в ветки или магистрали.
Если после шагов 1-4 все хорошо, нажмите Commit
в диалоговом окне слияния, чтобы зафиксировать слияние.
Ответ 2
Пример, который вы даете, скорее слияние, чем на самом деле Close. Кроме того, если это так просто, вы, вероятно, не хотите/не должны создавать именованную ветвь.
Но , если вы действительно хотите закрыть ветвь через TortoiseHg, например
- вы создали ветвь NewFeature
- тогда были изменены как ветки Default branch, так и NewFeature
- то если ветвь NewFeature занимает довольно много времени, вы, возможно, уже несколько раз объединили значение по умолчанию в NewFeature (чтобы избежать слишком большого количества различий, когда вы захотите, наконец, объединить ветвь NewFeature в значение по умолчанию)
- в конечном итоге ваша новая функция полностью реализована или достаточно стабильна, вы объединили ветвь NewFeature в значение по умолчанию.
Отныне никто не должен ничего совершать на ветке NewFeature, поэтому вы хотели бы закрыть его.
Вы можете сделать это в TortoiseHg (у меня есть версия 2.3.2):
- нажмите Hg Commit..., когда вы в своей ветке NewFeature (нет необходимости что-либо совершать - или вы делаете это с окончательным слиянием)
- нажмите "Ветвь: NewFeature" (она сверху выделена жирным шрифтом)
- выберите "Закрыть текущую ветку" .
Ответ 3
В TortoiseHg ваша рабочая копия должна быть обновлена до конца ветки, которую вы хотите закрыть, прежде чем использовать диалог фиксации.
Закрытие ветки создаст новый набор изменений поверх кончика ответвления.
Обнаруженная вами ошибка (abort: can only close branch heads
) обычно возникает, если вы обновили набор изменений не на вершине именованной ветки.
Ответ 4
Вы также получаете эту ошибку: ветка уже закрыта, т.е. пытается закрыть закрытую ветвь. Полезное сообщение об ошибке было бы полезно.