Могу ли я отметить ветку как "не собираюсь давить"?
Я использую именованные ветви в 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 = .
Это приведет к сравнению всех исходящих наборов изменений с указанным хранилищем. В этом случае сравнение исходящих наборов изменений в вашем локальном репозитории с вашим локальным репозиторием ничего не дает.
Вы по-прежнему можете извлекать / обновлять / объединять из основного репозитория, но никакая принудительная отправка никогда не отправит ничего обратно в этот главный репозиторий.
Если вы работаете на нескольких компьютерах / в репозиториях, вы можете настроить один из них, как описано выше, и настроить другие, чтобы указать путь по умолчанию, указывающий на сервер, который работает на себя. Таким образом, другие машины могут отправлять / извлекать данные в ваш локальный центральный репозиторий, и эти наборы изменений никогда не ускользнут от вашей тщательно сконфигурированной коллекции репозиториев.