Сила толчка к новой голове, когда уже вытащил все изменения - PullRequest
4 голосов
/ 13 февраля 2012

Можно ли принудительно создать новую удаленную головку при нажатии?

Предположим, я сделал несколько локальных коммитов на ветке "default", затем извлек и слил с удаленного.

Теперь я хотел быЯ хотел бы перенести мои коммиты на удаленное создание новой головки и закладки, но сохранить существующие удаленные заголовок и подсказку - т.е.мои коллеги не должны получать мои изменения при выполнении hg fetch.

По сути, это должна быть ветвь с коротким сроком службы (то есть не именованная ветвь) для целей резервного копирования и проверки кода другими, прежде чем они будут полностью объединены в "main "голова ветки по умолчанию.

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

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Вы не можете сохранить tip при нажатии: это псевдотег, который всегда указывает на новейший набор изменений в хранилище. Концепция tip устарела в Mercurial, потому что tip может менять значение более или менее случайным образом в зависимости от порядка толчков - как вы видели.

Единственный способ создать новую главу - это, ну, в общем, создать ее :-) Под этим я подразумеваю, что вам нужно две головки - одна с вашими изменениями, а другая с основным кодом, который вы хотите колледжи, чтобы тянуть и сливаться с. Имея только одну голову (ту, которую вы получили после запуска hg merge), нет никакого способа дать понять колледжам, что им не следует ее использовать.

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

1 голос
/ 21 января 2013

Мое решение этой проблемы - использовать предыдущую ревизию для начала закладки, если ее нет или вы просто не хотите, вы можете сделать фиктивную фиксацию (например, небольшое изменение в файле README и т. Д. .) и добавьте в закладки ревизию перед этим.

Я думаю, что hg-закладки нуждаются в тонкой настройке, прежде чем они станут похожими на git-ветки, но процесс, который я описываю, в значительной степени описан в ртутных закладках. .

Например, если ваша текущая версия 250.

echo >>README
hg ci -m "enabling bookmark branch_xyz"
hg book my-tip # optional but nice to have
hg book -r 250 branch_xyz
hg up branch_xyz
# hack ... hack hack
hg ci -m "awesome feature xyz (in progress)"
hg push -fB branch_xyz 

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

1 голос
/ 13 февраля 2012

Вы можете использовать опцию --force для принудительного создания новой головы.

Опция --new-branch используется для именованной ветви, в вашем случае речь идет об анонимном ветвлении.

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

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

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

...