Изменение сообщения о фиксации при создании большого количества наборов изменений с помощью Mercurial

Мне нужно перенести большое количество (тысячи) небольших наборов изменений из ветви A в ветку B - но мне нужно изменить сообщение фиксации в процессе.

Изменение сообщения должно выглядеть примерно так:

"Ref XXX: Fixed foo and bar" -> "GRAFT: Ref YYY: Fixed foo and bar".

Другими словами, мне нужно добавить "GRAFT:" и изменить ссылочный номер. Если я не могу сделать эти замены непосредственно с помощью Mercurial, я мог бы заранее создать новые сообщения фиксации, а затем создать сценарий для применения каждого нового сообщения во время его соответствующей трансплантации. К счастью, Mercurial позволяет редактировать сообщения о фиксации во время прививки с аргументом -e:

https://www.mercurial-scm.org/repo/hg/help/graft

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

Моим последним вариантом будет использование текстового редактора с каким-то скриптом AutoIt/Macro для ввода нужных мест в нужное время, но мысль о необходимости прибегнуть к этому откровенно заставляет меня чувствовать себя немного плохо.

Спаси меня от этой безобразной судьбы.

Заранее спасибо.

1 ответ

Решение

Возможный обходной путь - указать использование сценария оболочки вместо редактора. Например:

#!/bin/sh
sed -e '1,1s/^/GRAFT: /' -i "$1"

Мы используем тот факт, что с -i, sed сделаем редактирование на месте. Не забудьте сделать исполняемый скрипт оболочки. Тогда вы можете запустить

hg graft --config ui.editor=/path/to/prepend-graft.sh -e -r <revision>

где /path/to/prepend-graft.sh это путь вышеупомянутого сценария оболочки.

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

Другие вопросы по тегам