古い SVN リポジトリから Git コミットを見つけるための bash コマンドをまとめています。これが私のコマンド全体です:
$ svn log --xml --revision 323016 http://svn.php.net/repository | grep "<msg>" | sed 's/<msg>//' | xargs --verbose -i% git log --pretty=oneline --grep=\"%\"
git log --pretty=oneline --grep="Always restore PG(magic_quote_gpc) on request shutdown"
コマンドの最初のいくつかの部分を実行すると、コミット コメントが表示されます。
$ svn log --xml --revision 323016 http://svn.php.net/repository | grep "<msg>" | sed 's/<msg>//'
Always restore PG(magic_quote_gpc) on request shutdown
これで問題なく動作しますが、xargs 経由で git log --grep を使用したい場合、動作しません (応答がありません)。
ここに奇妙な部分があります...--verbose
コマンドを出力します。その正確なコマンドをコピーして貼り付けると、必要な出力が得られます。あれは:
$ git log --pretty=oneline --grep="Always restore PG(magic_quote_gpc) on request shutdown"
87c038be06b8b0eb721270f98c858fd701f5d54b Always restore PG(magic_quote_gpc) on request shutdown
また、これは何らかの理由で機能しません。
$ echo -n "Always restore PG(magic_quote_gpc) on request shutdown" | xargs --verbose -i% git log --grep=\"%\"
git log --grep="Always restore PG(magic_quote_gpc) on request shutdown"
だから、それは私の xargs の使用法に違いありませんよね?