Рассмотрение магазина подверсии, переключающееся на Подвижный, пытаясь выяснить заранее, чем будут все жалобы от разработчиков. Существует один случай довольно общего использования здесь, что я не вижу, как обработать.
Теперь, что?
Я посмотрел "На подвижные изменения избирательного подхода к выбору для фиксации" и "лучших практик в подвижном: ответвление по сравнению с клоном и частичные слияния?" и все предложения, кажется, расширения переменной сложности от Записи и Откладывают Очередям.
То, что, по-видимому, нет никакой базовой функциональности для этого, заставляет меня подозревать, что в некотором смысле этот рабочий стиль Делает Ее Неправильно. Что было бы как будто подвижное решение этого варианта использования быть похожим?
Отредактированный для добавления: мерзавец, в отличие от этого, кажется разработанным для этого рабочего процесса: git add
bugfix файлы, не делать git add
что-либо еще (или git reset HEAD
что-либо Вы, возможно, уже добавили), git commit
.
Не используйте Mercurial без использования Mq Extension (оно входит в комплект поставки по умолчанию). Помимо решения вашей конкретной проблемы, он решает множество других общих проблем и действительно должен быть вашим способом работы по умолчанию (особенно если вы используете IDE, которая не интегрируется напрямую с Hg, что позволяет переключать ветки на лету. трудный способ работы).
Многие полезные функции Mercurial предоставляются в виде расширений - не бойтесь их использовать.
Что касается вашего вопроса, record
предоставляет то, что вы называете частичными коммитами (он позволяет вам выбирать, какие куски изменений вы хотите зафиксировать). С другой стороны, shelve
позволяет временно сделать рабочую копию чистой, сохраняя изменения локально. Как только вы зафиксируете исправление ошибки, вы сможете снять шельфование изменений и продолжить работу.
Каноническим способом обойти это (т.е. используя только ядро), вероятно, будет создание клона (обратите внимание, что локальные клоны дешевы, поскольку вместо копий создаются жесткие ссылки).
Вот как я поступил бы в этом случае:
В вашем сценарии я бы часто совершал коммиты в свою ветку вне функциональной ветки.
Когда пришел запрос, я бы hg up -r XYZ
, где XYZ - это номер версии, которую они запускают, затем разветвлял новую ветвь функции от этой (или вверх имя ветки
, что угодно).
Выполните работу, а затем выполните слияние в стабильную ветку после проверки работы.
Вернитесь к моей работе и выполните слияние с верхнего узла фиксации ветки функций, таким образом объединяя два потока усилий.
Как и любой DVCS, ветвление - ваш друг. Разветвление репозитория несколькими способами - это основа этой системы. Вот модель git , которую вы могли бы рассмотреть, и которая также неплохо работает с Mercurial.
В дополнение к тому, что Санта сказал о том, что ветвление является вашим другом ...
Коммиты с мелкой детализацией - ваш друг. Вместо того, чтобы вносить множество изменений кода в одну фиксацию, вносите каждое логически автономное изменение кода в отдельную фиксацию. Тогда будет намного проще подбирать вишневые изменения для слияния между ветвями.
Вы могли бы клонировать репозиторий (т.е. создать ветку исправления ошибок в терминах SVN) и выполнить исправление оттуда.
В качестве альтернативы, если это действительно быстрое исправление, вы можете использовать опцию -I при фиксации, чтобы явно проверить отдельные файлы.