Существуют ли какие-либо инструменты исправлений, которые хорошо работают с Mercurial, когда рабочие процессы на основе исправлений не работают, вызывая в вашем репозитории фрагменты - PullRequest
1 голос
/ 28 октября 2011

Я ищу лучший инструмент для патчей, чем встроенный в Mercurial, или визуальный инструмент, который поможет мне редактировать патчи, чтобы они были приняты в Mercurial или Gnu patch.

В Mercurial Wiki есть тема HandlingRejects , в которой показано, как просто избежать Patching. Я рассчитываю реализовать рабочий процесс на основе Mercurial для управления версиями ветвей функций, основанный на ветвях функций и основанный на экспорте и проверке исправлений до их интеграции. В моем первоначальном тестировании этой идеи самым слабым звеном в моих «заплатках» и «проверять, принимать и изменять» исправления является способ, которым отказ от исправления закрывает меня.

Вот некоторые распространенные случаи, когда импорт меркуриальных патчей не удался мне:

Тривиальные изменения как в repoA восходящего потока, так и в repoB ветви компонентов, где где-то в одной ветке добавляется одна строка Поскольку обе ветви имеют историю, инструмент слияния должен иметь возможность видеть, что «кто-то добавил одну строку в repoA, а кто-то добавил одну строку в repoB». Однако в случае импорта исправлений это приводит к отклонению импорта исправлений и появлению в вашем хранилище файла .rej, который вы должны исправить вручную (редактируя файл .rej, пока он не будет применен).

На странице вики выше упоминается инструмент mpatch, который можно найти здесь . Я ищу другие инструменты Better Merge, которые (а) работают с Mercurial и (б) могут обрабатывать тривиальный случай, упомянутый на вики-странице Обработка отклонений выше. Обратите внимание, что mpatch не работает для моих целей, мне кажется, что мне нужно нечто большее, чем инструмент перебазирования, а не инструмент исправления, и в моем случае мне, возможно, придется заставить инструмент исправления учитывать синтаксис (и, таким образом, специфичный для единый язык программирования).

Я ищу инструменты, доступные для работы в Windows, как изначально, так и даже через что-то вроде cygwin. Я не использую среду Unix / Linux, хотя мне удобнее использовать инструменты в стиле Linux / Unix.

В настоящее время я не использую расширения mq, просто экспортирую диапазоны изменений с помощью hg export и импортирую с помощью hg import, а остальная часть работы - мои собственные изобретения, однако я пометил это mq как Пользователи mq будут знакомы с этой проблемой обработки .rej.

Смежный вопрос здесь показывает способы решения таких проблем при использовании TortoiseHg.

1 Ответ

2 голосов
/ 29 октября 2011

Emacs вполне способен обрабатывать .rej файлы.

Однако, если это вообще возможно, я стараюсь использовать hg pull --rebase, когда это возможно. Часто я чувствую, что хочу перенести некоторые патчи на другой набор изменений, который я уже вытащил. В этих случаях я просто снимаю набор изменений и снова извлекаю его из .hg/strip-backup, что позволяет мне использовать --rebase.

...