mqの未適用パッチを一括削除するコマンド(qdelall)
MercurialのちょっとしたTipsです。
まず、ワンライナーでかいてみましょう。Mercurial で hg qpop で 適用解除したパッチを一括削除するワンライナーです。
ワンライナーで、未適用パッチを一括で削除
$ hg qseries | while read patch; do hg qdelete $patch; done
$ hg qseries
未適用のパッチが削除されました。
alias に登録し、 hg qdelall コマンドで削除する
[alias] qdelall =! $HG qseries | while read patch; do $HG qdelete $patch; done
のような感じで alias に登録しておけば、hg qdelall といったコマンドで実行可能です。
$ hg qdelall
hg qdelall の実行サンプル
tkondou@zion3:~/sandbox/mq$ hg init tkondou@zion3:~/sandbox/mq$ hg qnew 1.patch tkondou@zion3:~/sandbox/mq$ hg qnew 2.patch tkondou@zion3:~/sandbox/mq$ hg qseries 1.patch 2.patch tkondou@zion3:~/sandbox/mq$ tkondou@zion3:~/sandbox/mq$ hg qdelall 中断: 適用中のパッチ 1.patch は削除できません 中断: 適用中のパッチ 2.patch は削除できません tkondou@zion3:~/sandbox/mq$ tkondou@zion3:~/sandbox/mq$ hg qpop --all 2.patch の適用解除 1.patch の適用解除 全てのパッチの適用が解除されました tkondou@zion3:~/sandbox/mq$ hg qdelall tkondou@zion3:~/sandbox/mq$ hg qseries
適用中のパッチは削除されずに、未適用のパッチが削除されます。
Ubuntu 11.10 の bash上で実行しました。
msysgit(MSYS)上でのalias挙動を試す
Windows の MSYSの場合は、環境変数の $HG を "%HG%" にする必要があるのですが、それでも下記エラーとなってしまいます。
環境は、bash on msysgit on console2 on Windows 7
$ hg qdelall 'while' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
だれかアドバイスください!