Изменение сообщения о фиксации при создании большого количества наборов изменений с помощью 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, но будет следовать тому же подходу.