我正在尝试创建一个在每次推送之前运行php-cs-fixer的pre-push钩子。
这是我当前拥有的pre-push钩子:
#!/bin/sh
exec php-cs-fixer fix . --config-file=".php_cs" && git commit -am 'PSR-2'第一个命令没有问题地触发。只有git commit -am 'PSR-2没有。更准确地说,php-cs-fixer运行时会出现以下错误error: failed to push some refs to ..
我还尝试了以下方法,但没有成功:
#!/bin/sh
php-cs-fixer fix . --config-file=".php_cs" && git commit -am 'PSR-2'-
#!/bin/sh
(php-cs-fixer fix . --config-file=".php_cs" && git commit -am 'PSR-2')根据这个stackoverflow问题,它应该只有在cmd1成功的情况下才能运行。
发布于 2015-02-13 16:16:59
exec内置命令用给定的程序替换外壳。它不会 fork一个新的进程来执行php-cs-fixer。
因为&& git commit ...被php-cs-fixer程序替换了,所以shell永远不会执行。
看一看manpage of exec
如果指定了命令,它将替换外壳。不会创建任何新进程。
php-cs-fixer的第一行应该如下所示
#!/usr/bin/env php并且php-cs-fixer应该具有execute权限chmod +x php-cs-fixer。
然后你就可以直接使用它了
php-cs-fixer fix . --config-file=".php_cs" && git commit -am 'PSR-2'https://stackoverflow.com/questions/28495041
复制相似问题