【发布时间】:2012-08-07 22:06:35
【问题描述】:
我正在整理一个 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 的使用,对吧?
【问题讨论】: