首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git钩子未连续运行2个命令

Git钩子未连续运行2个命令
EN

Stack Overflow用户
提问于 2015-02-13 16:07:17
回答 1查看 142关注 0票数 1

我正在尝试创建一个在每次推送之前运行php-cs-fixerpre-push钩子。

这是我当前拥有的pre-push钩子:

代码语言:javascript
复制
#!/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 ..

我还尝试了以下方法,但没有成功:

代码语言:javascript
复制
#!/bin/sh

php-cs-fixer fix . --config-file=".php_cs" && git commit -am 'PSR-2'

-

代码语言:javascript
复制
#!/bin/sh

(php-cs-fixer fix . --config-file=".php_cs" && git commit -am 'PSR-2')

根据这个stackoverflow问题,它应该只有在cmd1成功的情况下才能运行。

EN

回答 1

Stack Overflow用户

发布于 2015-02-13 16:16:59

exec内置命令用给定的程序替换外壳。它不会 fork一个新的进程来执行php-cs-fixer

因为&& git commit ...php-cs-fixer程序替换了,所以shell永远不会执行。

看一看manpage of exec

如果指定了命令,它将替换外壳。不会创建任何新进程。

php-cs-fixer的第一行应该如下所示

代码语言:javascript
复制
#!/usr/bin/env php

并且php-cs-fixer应该具有execute权限chmod +x php-cs-fixer

然后你就可以直接使用它了

代码语言:javascript
复制
php-cs-fixer fix . --config-file=".php_cs" && git commit -am 'PSR-2'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28495041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档