Закрытие ветвей Hg

При использовании hg branch FeatureBranchName и публикации его в центральное репо, которое совместно используется разработчиками, существует ли способ закрыть FeatureBranchName, когда его разработка официально была объединена с ветвью по умолчанию?

Также было бы полезно, если FeatureBranchName не отображался при выполнении команды hg branches.

Ответ 1

hg commit --close-branch

должно быть достаточно, чтобы отметить закрытие ветки. (см. hg commit)

--close-branch

отметьте ветвь закрытой, скрыв ее из списка ветвей.

См. также этот поток:

Мое ожидание заключается в том, что я закрываю ветку, потому что эта линия развития зашла в тупик, и я больше не хочу ее беспокоить.
Поэтому, когда ветвь закрыта, я не должен ее видеть (например, в ветвях, головах, журналах), если я явно не прошу увидеть закрытые ветки.

Я должен отметить, что я ожидаю, что закрытая ветка останется в репозитории; это может быть полезно в будущем, а сообщение commit --close-branchдолжен по крайней мере объяснить, почему филиал был закрыт.
Обрезка ветвей - это совсем другое.


Примечание: бизнес "закрывающей ветки" - это один аспект, отсутствующий в Git, по сравнению с Mercurial:

, всегда говорили, эфемерные вещи, которые нужно использовать и выбросить, и насколько я знаю, git не имеет способа указать вашим коллегам, что вы сделали с веткой;
единственный способ сделать это - удалить его или надеяться, что он увидит окончательное слияние и поймет, что ветка закрыта для дальнейшей разработки.

[В Mercurial] Однако, если вы сделали ветку, вы не можете удалить ее из репозитория; вместо этого вы выдаете коммит, который закрывает ветвь, а Mercurial отмечает, что ветка закрыта. Itll останется постоянной частью истории вашего хранилища.

Ответ 2

Я написал простой script, который завершает закрытие ветки, команды, найденные в PruningDeadBranches.

## script ##

#!/bin/bash
#script to close not required branch in mercurial

hg up -C $1
if [ $? -eq 0 ]; then
    echo "$1 is up"
else
    echo "branch not found, please recheck your argument"
    exit 1
fi 
echo "$1 is up"
hg commit --close-branch -m 'this branch no longer required' 
echo "$1 is closed"
hg up -C default
echo "default is up" 

Как

Переместитесь к локальной копии репозитория и запустите этот script, предоставив аргумент. Например:

$./the_script_above.sh bad_branch_name_to_close

Что он делает

Это делает следующее:

  • Если ветка существует, она обновляется к данной ветке или существует с сообщение об ошибке.
  • Он закрывает ветвь.
  • Обновления ветки по умолчанию.
  • Остановка.