Могу ли я отметить ветку как «не собираюсь давить»? - PullRequest
33 голосов
/ 25 января 2012

Я использую именованные ветки в Mercurial.

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

С момента создания, каждый раз, когда я делаю push, мне говорят, что я добавил новую ветку, и у меня естьиспользовать флаг --new-branch.На данный момент hg push -b default (или любая другая ветка, которую я нажимаю) работает нормально, но это раздражает.Есть ли способ подавить это сообщение, сообщив Hg, что я не заинтересован в том, чтобы продвигать эту ветку когда-либо?

Ответы [ 3 ]

55 голосов
/ 25 января 2012

Начиная с Mercurial 2.1 (выпущен в феврале 2012 г.), вы можете пометить свои наборы изменений секрет , чтобы они не были отправлены в другое хранилище.Для этого вы используете новую команду 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 не существует эквивалентного механизма.Там лучше всего создать локальный клон для наборов изменений, которые вы не хотите выдвигать.

6 голосов
/ 25 января 2012

Обновление:

В Mercurial 2.1 введена команда hg phase, которая позволяет пользователям контролировать, какие наборы изменений обмениваются с удаленными репозиториями. @ MartinGeisler ответ на этот вопрос подробно описывает этот метод.

Оригинальный ответ:

Если вы хотите создать локальную ветвь своего кода, у вас естьпара вариантов.Вы можете hg clone репозиторий, который локально создаст ветку всего репозитория в вашей файловой системе.Другая альтернатива - вы можете попробовать использовать расширение Mercurial, например LocalbranchExtension .

. В Mercurial существует множество способов ветвления без использования именованной ветки.Просто найдите метод, который соответствует вашим потребностям.

Дополнительная информация: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

3 голосов
/ 02 ноября 2016

В дополнение к превосходному ответу выше относительно фаз, вы также можете указать 'default-path' (в разделе [paths] вашего .hgrc) для ссылки на локальный репозиторий:

[paths]
default = ...
default-push = .

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

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

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

...