Подтвердить что ты не робот

Слейте только один набор изменений из другой ветки

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

  • Я начинаю со стабильной версии R1
  • Я продолжаю развиваться по R1: CS1, CS2, CS3
  • В какой-то момент мне нужно решить ошибку из моей стабильной версии R1. И я хочу применить только один набор изменений от разрабатывающей строки (fe CS2)

Какой лучший aproach? Поскольку слияние не помогло, я сделал патч CS2, а затем применил патч в новой стабильной ветке, чтобы исправить ошибку. Что Mercurial путь?

Приветствия,

4b9b3361

Ответ 1

Расширение трансплантации автоматизирует то, что вы сделали с одной командой.

Но я думаю, что предпочтительный способ (который в зависимости от сценария не всегда возможен) заключается в том, чтобы сначала сделать исправление поверх R1, а затем объединить его с контентом разработки.

То есть:

  • Начните со стабильной версии R1.
  • Вы выполняете некоторую работу, cs1...csN.
  • Важное исправление необходимо для стабильной вершины R1, поэтому вы hg update R1.
  • Исправить, это дает R2.
  • Вернитесь туда, где вы остановились, hg update csN.
  • Слияние стабильно, так что у вас есть исправление, hg merge R2, hg commit...
  • Продолжайте работать над csN+1.

Ответ 2

ОБНОВЛЕНИЕ: больше нет необходимости в расширении с Hg 2.0

Как отмечал "CAD-код", это именно то, что команда graft, для которой была введена в Hg 2.0.

SourceTree

Самый простой способ сделать это - с помощью графического интерфейса, такого как SourceTree, просто дважды щелкните по ветки TARGET, чтобы переключиться, затем нажмите правую кнопку мыши на любой другой ревизии и выберите команду "Графт" (как ни странно, она также может быть ревизией текущей ветки). Если конфликтов нет, SourceTree немедленно создаст новую ревизию для текущей ветки.

TortoiseHg

Точно так же, выберите TARGET Branch, затем rmb над ревизией, которую вы хотите перенести: Как перенести с TortoiseHg

Командная строка

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

hg graft -r {revision_number}

с {revision_number}, очевидно, являющимся номером ревизии, которую вы хотите включить в текущую ветку. Это создаст новый набор изменений в вашей текущей ветке со всеми файлами из ревизии, номер которой вы использовали в команде.

Чтобы узнать больше о команде трансплантата, прочитайте эту тему здесь, fooobar.com/info/58735/...