В Mercurial можно ли объединить несколько файлов между двумя ветками? - PullRequest
5 голосов
/ 07 ноября 2011

Читая на Mercurial, кажется, что он всегда ветвится и объединяет полные репозитории.

Можно ли просто объединить несколько файлов из одной ветви в другую?(Например, я могу пожелать только объединить файлы, которые исправляют данную ошибку.)

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

Я исхожу из «образа мышления» перформанса, поэтому, возможно, думаю об этом неправильно.

Ответы [ 2 ]

8 голосов
/ 08 ноября 2011

Да, Mercurial всегда разветвляется и объединяет все дерево. У вас нет той «гибкости», которую дает что-то вроде perforce, чтобы выбрать отдельные файлы для слияния. Это хорошая вещь (поверь мне). Наборы изменений являются атомарными (вы не можете их разделить) и неизменяемыми (вы не можете их изменить). Следовательно, для этого нужно немного изменить мышление.

Изменения должны быть нацелены на одну задачу и только одну задачу. Если вы исправляете ошибку, в набор изменений ничего не входит, кроме исправления ошибки. Затем у вас есть набор изменений, который документирует это исправление ошибки, и у вас нет проблемы с желанием разбить его. Не было бы смысла хотеть. Половина исправления ошибки часто хуже, чем отсутствие исправления ошибки.

Когда дело доходит до слияния, есть несколько вариантов:

  • Одна школа мысли говорит, что вам следует вернуться туда, где была введена ошибка. Почини это. Фиксация (создание небольшой анонимной ветви) и слияние этого вперед в любую головку, на которой вы хотите (dev, stable, release, что угодно). Это не всегда практично.
  • Другой метод - исправить ошибку в ветке релиза, а затем объединить с веткой разработки. Это нормально работает.
  • В качестве альтернативы вы можете исправить это в начале вашей ветки разработки, но затем, если вы объедините ее с веткой релизов, вы перенесете все свои изменения в разработке. Именно здесь вступают в игру graft ( new в 2.0 ) и старое расширение transplant. Они позволяют вам «выбрать вишню» одного или нескольких наборов изменений из другой ветви и разместить их в другой ветви.
3 голосов
/ 07 ноября 2011

Читая на Mercurial, он, кажется, всегда ветвится и объединяет полные репозитории.

Да

Можно ли просто объединить несколько файлов из одной ветви в другую? (Например, я могу пожелать только объединить файлы, которые исправляют данную ошибку.)

Просто дотроньтесь только до «некоторых файлов» в необходимом наборе изменений и объедините ветку с этим набором изменений в голове с другой веткой или пересадкой за любое время

Точно так же я могу выбрать некоторые наборы изменений, но при этом иметь правильную запись слияния, поэтому, если я завершу слияние, будет выполнено позже, это правильно?

Да, вы можете пересадить | любые изменения в другой ветке, примененное состояние будет запомнено, и изменения не будут продублированы при окончательном слиянии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...