Mercurial выдвигает все локальные ветви или только рабочую ветку? - PullRequest
2 голосов
/ 05 июня 2019

Когда у меня есть 3 таких ветки:

  • feature / my-branch-1
  • feature / my-branch-2
  • feature / my-branch-3

И я работаю над feature / my-branch-1

После запуска

hg push

amЯ толкаю все эти 3 ветки или только рабочую ветку (feature / my-branch-1)?

1 Ответ

3 голосов
/ 05 июня 2019

По умолчанию будут отправлены все наборы изменений во всех ветвях, которых еще нет в репозитории назначения.

Вы можете протолкнуть только выбранную ветку с помощью опции -b:

# hg push --help
hg push [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]

push changes to the specified destination

    Push changesets from the local repository to the specified destination.
...
options ([+] can be repeated):

..
 -b --branch BRANCH [+]     a specific branch you would like to push
..

Примечание 1. Если вы используете phase , то специально push будет искать любые draft или public изменения, которые не являютсяв пункте назначения, и нажмите только те.Он не будет выдвигать никакие секретные изменения.После того, как они будут сдвинуты, для черновиков наборов изменений их фаза будет изменена на общедоступную.

(Возможно, вы могли бы удалить открытые наборы изменений - например, если вы явно пометили их фазу как открытую, или, возможно, если вы перешли на использованиефазы, в которых вы не использовали их ранее.)

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

# hg phase --help                                                               
hg phase [-p|-d|-s] [-f] [-r] [REV...]                                          

set or show the current phase name                                              
...                                                                                
options ([+] can be repeated):                                                  

 -p --public      set changeset phase to public                                 
 -d --draft       set changeset phase to draft                                  
 -s --secret      set changeset phase to secret                                 
 -f --force       allow to move boundary backward                               
 -r --rev REV [+] target revision

Примечание 2. В нескольких случаях толчок может проявляться вспециальные способы.

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

По умолчанию push не позволяет создавать новые головки в пункте назначения, поскольку из-за нескольких головок неясно, какую головку использовать.

Если вам действительно нужнотолкание нескольких головок может быть сделано " с опцией -f / --force, которая будет выдвигать все новые головки во всех ветвях ", которые он советует " почти всегда вызывает путаницу для соавторов".

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

Используйте --new-branch, если вы хотите разрешить push создать новую именованную ветвь, которой нет в месте назначения.Это позволяет вам только создавать новую ветвь, не вызывая других изменений.

(фрагменты текста из hg push --help)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...