Mercurial Queues: объединение патчей из нескольких репозиториев - PullRequest
4 голосов
/ 11 января 2011

Я использую Mercurial Queues в хранилище и поместил эти исправления в хранилище исправлений.Другой участник клонировал мою очередь исправлений и внес свои изменения.Теперь я хотел бы объединить их изменения в моем локальном хранилище исправлений.

Я пытаюсь найти хороший рабочий процесс для выполнения этого слияния, чтобы

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

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

Есть ли лучший способ?

Ответы [ 2 ]

1 голос
/ 12 января 2011

Нет хорошего способа справиться с этим. Вероятно, я бы в итоге создал два клона и qfinish вставил ваш патч в один, а патч-вкладчик - в другой. В этот момент у вас будут репо с чистым эффектом каждого отдельного патча. Затем вы hg pull один из этих клонов переходите в другой, и hg merge позволит вам использовать ваши графические инструменты для объединения результатов исправлений - и единственными различиями должны быть различия в ваших исправлениях. На данный момент, в идеале, вы сможете qimport набор изменений слияния, но вы не можете этого сделать, поэтому вы должны 'hg diff -r tip-1 -r tip', чтобы получить новый diff, который разница между результатами до начала и после слияния двух результатов. Затем вы 'qimport`, что diff и зафиксируйте его в вашем репо очереди патчей с примечанием, откуда он взялся.

Решительно неоптимальный, но лучшее, что я могу придумать. Я хотел бы услышать лучшее решение.

0 голосов
/ 13 января 2011

Боюсь, что нет автоматического способа объединения патчей.

Однако вы можете использовать один «трюк» для создания новых патчей вместо редактирования / обновления существующих патчей, когда вам нужно их исправить. Когда вы все согласитесь с правильным решением, тогда hg qfold патчи.

Таким образом, вы не будете наступать друг другу на пальцы, так как создаете новые патчи.

...