Могу ли я отметить ветку как "не нажимать"?
Я использую названные ветки в Mercurial.
При этом я создал одну ветку, называемую игровой площадкой, где я могу попробовать различные дурацкие эксперименты. Я никогда не собираюсь объединять эту ветку в какие-либо другие, и я никогда не хочу подталкивать ее в наш основной репозиторий.
С момента создания, каждый раз, когда я делаю push, мне говорят, что я добавил новую ветку, и мне нужно использовать флаг --new-branch
. На данный момент hg push -b default
(или любая ветка, которую я нажимаю) работает нормально, но это раздражает. Есть ли способ подавить это сообщение, позволив Hg знать, что мне не интересно толкать эту ветвь когда-либо?
Ответы
Ответ 1
Начиная с Mercurial 2.1 (выйдет через неделю 1 февраля), вы можете пометить свои изменения секретный, чтобы они не были перенесены в другой репозиторий. Для этого вы используете новую команду hg phase
:
$ hg phase --force --secret .
Отметьте текущую родительскую ревизию рабочего каталога (.
) как находящуюся в фазе secret
. Секретные комплекты изменений локальны для вашего репозитория: их не будут толкать или вытаскивать. Теперь нажатие выглядит следующим образом:
$ hg push
pushing to /home/mg/tmp/repo
searching for changes
no changes to push but 2 secret changesets
В старых версиях Mercurial нет эквивалентного механизма. Лучше всего создать локальный клон для тех наборов изменений, которые вы не хотите нажимать.
Ответ 2
Обновление:
Mercurial 2.1 представил команду hg phase
, которая позволяет пользователям контролировать, какие наборы изменений обмениваются с удаленными репозиториями. @MartinGeisler ответ на этот вопрос подробно описывает этот метод.
Исходный ответ:
Если вы хотите создать локальную ветвь своего кода, у вас есть пара вариантов. Вы можете hg clone
репозиторий, который будет локально создавать ветвь всего репозитория в вашей файловой системе. Другая альтернатива - вы можете попытаться использовать расширение Mercurial, например LocalbranchExtension.
Существует много способов разветвления в Mercurial без использования именованной ветки. Просто найдите метод, который соответствует вашим потребностям.
Дополнительная литература: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/
Ответ 3
В дополнение к превосходному ответу выше, касающемуся этапов, вы также можете указать "путь по умолчанию" (в разделе [paths] вашего .hgrc) для ссылки на локальный репозиторий:
[paths]
default = ...
default-push = .
Это приведет к тому, что все исходящие изменения будут сравниваться с указанным репозиторием. В этом случае сравнение исходящих наборов изменений в вашем локальном репозитории В ваш локальный репозиторий нечего нажать.
Вы все равно можете вытащить/обновить/слить из основного репозитория, но никакое нажатие никогда не отправит ничего обратно в этот основной репозиторий.
Если вы работаете с несколькими компьютерами/репозиториями, вы можете установить один из них, как описано выше, и настроить остальные, чтобы указать путь по умолчанию для указания на сервер, который подталкивает к себе. Таким образом, другие машины могут нажать/вытащить в локальный центральный репозиторий, и эти изменения никогда не покинут вашу тщательно сконфигурированную коллекцию репозиториев.