当前位置:  开发笔记 > 编程语言 > 正文

如何在post-receive hook之后执行命令

如何解决《如何在post-receivehook之后执行命令》经验,为你挑选了1个好方法。

这是我的实际post-receive钩子:

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

在文件已经存在于文件夹中之后,有什么方法可以运行命令吗?

我想跑 composer update



1> Chris..:

钩子脚本只是一个shell脚本(/bin/sh在您的示例中执行).您的脚本当前只有一个命令,由git checkout您已有的行定义.

要做其他事情git checkout,请在git checkout行之后将其添加到脚本中.这样的事情应该做:

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
cd /var/www/domain.com && composer install

请注意,我使用过composerinstall,而不是composer update.这是有充分理由的.

composer update可能不会导致您在开发过程中使用的确切依赖项.例如,如果您依赖some/lib:1.2.*,则可能会1.2.1在开发框中以及1.2.2稍后在生产计算机上获得版本.更糟糕的是,也许你正在使用类似的东西,dev-master在这种情况下,环境之间可能存在重大差异.

从它的文档:

要获取最新版本的依赖项并更新composer.lock文件,您应该使用该update命令.

将其与(强调我的)文档进行install比较:

install命令composer.json从当前目录中读取文件,解析依赖项并将其安装到其中vendor.

php composer.phar install

如果composer.lock当前目录中有文件,它将使用那里的确切版本而不是解析它们.这确保了使用该库的每个人都将获得相同版本的依赖项.

如果没有composer.lock文件,Composer将在依赖项解析后创建一个文件.

如果您按照建议提交composer.lock文件,将在服务器上为您提供与在其他地方使用的版本相同的版本.composer install

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有