我正在整理一个 bash 命令来从旧的 SVN 存储库中查找 Git 提交。这是我的整个命令:
$ 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 的使用,对吧?