2017-07-04 3 views
2

ブランチAからブランチBに少数の小さなチェンジセットを移植する必要がありますが、そのプロセスでコミットメッセージを変更する必要があります。Mercurialを使用して多数のチェンジセットを移植する際にコミットメッセージを変更する

メッセージの変更は、次のように大まかに見える必要があります:参照番号を変更:

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

言い換えれば、私が先頭に追加「グラフト」する必要があります。これらの置換を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スクリプトよりも複雑なコードが必要になることがありますが、同じアプローチに従います。

関連する問題