Могу ли я отметить ветку как "не собираюсь давить"?

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

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

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

3 ответа

Решение

Начиная с 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 нет аналогичного механизма. Там лучше всего создать локальный клон для наборов изменений, которые вы не хотите выдвигать.

Обновить:

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

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

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

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

Дополнительное чтение: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

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

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

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

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

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

Другие вопросы по тегам