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

Рабочий процесс "backport" изменяется на другую ветку Mercurial (Hg)?

У нас две головы. Один из них - наш главный глава развития, а другой - тот, о котором я забыл до сегодняшнего дня. Мы обнаружили ошибку и зафиксировали ее в нашей основной ветке разработки, и я просто понял, что ее нужно исправлять и в старой ветке.

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

4b9b3361

Ответ 1

Да, у вас есть два хороших варианта:

Графт: новый в Mercurial 2.0

В этой версии представлена ​​команда трансплантат, которая может поддерживать интеллектуальные изменения. "Интеллект" заключается в том, что он будет использовать слияния внутри, а это означает, что вы получаете

  • Поддержка переименований: Представьте, что вы исправили ошибку в файле foo.c в ветке разработки. В старшей ветки обслуживания foo.c был вызван bar.c. Используя hg graft, изменение на foo.c можно корректно объединить в старый bar.c.

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

Чтобы скопировать кончик default на old-branch, вы просто запускаете

$ hg update old-branch
$ hg graft default

Трансплантация: более старые версии

До того, как мы получили команду трансплантата, путь

Использование трансплантата прост:

$ hg update old-branch
$ hg transplant default

Это очень близко к запуску

$ hg update old-branch
$ hg export default | hg import -

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