Если вы «hg clone» ранее сделали коммит, а затем зафиксировали, создадите ли вы новую ветку? - PullRequest
0 голосов
/ 02 ноября 2018

Я знаю, что когда вы обновляете предыдущую ревизию, вы создаете новую ветвь при следующей фиксации. Что происходит, когда вы клонируете более раннюю ревизию? Будет ли ваш следующий коммит (или push) создать новую ветку?

Причина, по которой я спрашиваю, заключается в том, что наш Совет в настоящее время не работает, поэтому до его исправления я планировал сделать следующее:

hg clone -r <prev_rev> <Tip>
# make changes
hg commit -m "my changes" -u me
# wait for Tip to get fixed
hg pull 
hg merge
hg push

Будет ли это работать? Или это в конечном итоге создаст новую ветку или висячую голову? Я бы хотел не делать ни одной из этих вещей.

1 Ответ

0 голосов
/ 06 ноября 2018

Да, это создаст ветку, по крайней мере, в том смысле, что в истории хранилища есть «ветвь».

Филиалу не будет присвоено имя новой ветви, но само по себе это обычно не важно с точки зрения понимания того, как будет выглядеть история в репозитории.

Если ваш исходный репо был:

A-B-C-D

Затем вы делаете hg clone -r C... и новый коммит, в итоге вы получите:

A-B-C-(D)
     \
      E

Теперь, поскольку вы клонировали только до C, этот конкретный локальный репозиторий может еще не включать D. Но когда вы в конце концов синхронизируете это с другим, с которым придется иметь дело. Если вы потянете, то вы получите D в этом клоне. Если вы попытаетесь нажать HG, вы получите предупреждение о создании новой удаленной головки, для которой обычным подходом является объединение.

В этом подходе нет ничего плохого. Если вам нужно пока что обойти проблему в подсказке, это разумный способ сделать это. Но вам на самом деле не нужен новый клон, вы можете просто hg update C и работать оттуда, что может быть проще.

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