В Подвижном, как я выбираю определенные файлы от именованного ответвления для слияния назад со значением по умолчанию?

У меня есть большое именованное ответвление с большим количеством изменений. Некоторые из этих изменений являются неразрушающими, таким образом, я хочу выбрать эти определенные файлы сначала и объединить их со значением по умолчанию как можно скорее. (Затем позже разрушительные изменения объединяются также.)

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

7
задан tshepang 19 September 2014 в 19:33
поделиться

2 ответа

Насколько я знаю, в Mercurial нет инструментов для разделения наборов изменений. Если вам повезет, то все нужные вам изменения будут в отдельных наборах изменений, и тогда вы сможете использовать TransplantExtension. Я думаю, это можно сравнить с cherry-pick в Git'е, но я не часто использовал git.

Вы также можете использовать hg diff для ручной фиксации изменений определённого файла в новой ветке. Используйте диапазон rev, чтобы пометить всю ветку исходников:

hg diff myfile -r startrevision:endrevision

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

Сказав это, то, что вы пытаетесь сделать, - это не то, для чего был создан mercurial. Такое жесткое редактирование истории - это больше область Git'а (заметьте, это только мое мнение). Храните свои стабильные изменения и деструктивные изменения в отдельных наборах изменений (и, возможно, даже в отдельных ветках). Я использую transplant, rebase и strip для перемещения изменений. Когда все готово, они объединяются и должным образом проталкиваются.

О, и проверьте MercurialQueues. Я сам его не использовал, но видел, как он делает некоторые безумные вещи. Возможно, он способен сделать что-то похожее на то, что вы хотите.

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

Я думаю, mercurialqueues - это то, что вам нужно. С помощью mq вы можете превратить любой changeset в патч, а любой патч - в changeset. То есть, взяв changeset, вы преобразуете его в патч, удаляя из него те части, которые вам не нужны, а затем применяете его к любой ветке, которая вам нужна. Однако это довольно сложная операция и требует определенной дисциплины с вашей стороны. Поэтому я бы попытался отработать ваш рабочий процесс на тестовом репозитории, прежде чем пробовать его на коде, который вам важен.

4
ответ дан 6 December 2019 в 23:00
поделиться
Другие вопросы по тегам:

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