Обхождение без частичных фиксаций “Подвижный путь”

Рассмотрение магазина подверсии, переключающееся на Подвижный, пытаясь выяснить заранее, чем будут все жалобы от разработчиков. Существует один случай довольно общего использования здесь, что я не вижу, как обработать.

  1. Я работаю над некоторой великоватой функцией, и у меня есть значительная часть кода - или возможно несколько значительных частей кода - в частях на всем протяжении пола гаража, полностью неподходящего для регистрации, возможно, даже не компилируя.
  2. Входит срочный запрос bugfix. Фиксация хороша и локальна и не касается ни одного кода, я продолжал работать.
  3. Я делаю фиксацию в своей рабочей копии.

Теперь, что?

Я посмотрел "На подвижные изменения избирательного подхода к выбору для фиксации" и "лучших практик в подвижном: ответвление по сравнению с клоном и частичные слияния?" и все предложения, кажется, расширения переменной сложности от Записи и Откладывают Очередям.

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


Отредактированный для добавления: мерзавец, в отличие от этого, кажется разработанным для этого рабочего процесса: git add bugfix файлы, не делать git add что-либо еще (или git reset HEAD что-либо Вы, возможно, уже добавили), git commit.

12
задан Community 23 May 2017 в 11:55
поделиться

6 ответов

Не используйте Mercurial без использования Mq Extension (оно входит в комплект поставки по умолчанию). Помимо решения вашей конкретной проблемы, он решает множество других общих проблем и действительно должен быть вашим способом работы по умолчанию (особенно если вы используете IDE, которая не интегрируется напрямую с Hg, что позволяет переключать ветки на лету. трудный способ работы).

1
ответ дан 2 December 2019 в 07:02
поделиться

Многие полезные функции Mercurial предоставляются в виде расширений - не бойтесь их использовать.

Что касается вашего вопроса, record предоставляет то, что вы называете частичными коммитами (он позволяет вам выбирать, какие куски изменений вы хотите зафиксировать). С другой стороны, shelve позволяет временно сделать рабочую копию чистой, сохраняя изменения локально. Как только вы зафиксируете исправление ошибки, вы сможете снять шельфование изменений и продолжить работу.

Каноническим способом обойти это (т.е. используя только ядро), вероятно, будет создание клона (обратите внимание, что локальные клоны дешевы, поскольку вместо копий создаются жесткие ссылки).

6
ответ дан 2 December 2019 в 07:02
поделиться

Вот как я поступил бы в этом случае:

  1. иметь ветку разработчика
  2. иметь ветвь функций
  3. иметь личную ветку
  4. иметь стабильную ветку.

В вашем сценарии я бы часто совершал коммиты в свою ветку вне функциональной ветки.

Когда пришел запрос, я бы hg up -r XYZ , где XYZ - это номер версии, которую они запускают, затем разветвлял новую ветвь функции от этой (или вверх имя ветки , что угодно).

Выполните работу, а затем выполните слияние в стабильную ветку после проверки работы.

Вернитесь к моей работе и выполните слияние с верхнего узла фиксации ветки функций, таким образом объединяя два потока усилий.

8
ответ дан 2 December 2019 в 07:02
поделиться

Как и любой DVCS, ветвление - ваш друг. Разветвление репозитория несколькими способами - это основа этой системы. Вот модель git , которую вы могли бы рассмотреть, и которая также неплохо работает с Mercurial.

3
ответ дан 2 December 2019 в 07:02
поделиться

В дополнение к тому, что Санта сказал о том, что ветвление является вашим другом ...

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

1
ответ дан 2 December 2019 в 07:02
поделиться

Вы могли бы клонировать репозиторий (т.е. создать ветку исправления ошибок в терминах SVN) и выполнить исправление оттуда.

В качестве альтернативы, если это действительно быстрое исправление, вы можете использовать опцию -I при фиксации, чтобы явно проверить отдельные файлы.

3
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: