post-receive hook后如何执行命令
How to execute commands after post-receive hook
这是我的实际 post-receive
挂钩:
#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
有什么方法可以让我在文件已经在文件夹中后 运行 命令?
我要运行composer update
钩子脚本只是一个 shell 脚本(在您的示例中由 /bin/sh
执行)。您的脚本当前只有一个命令,由您已有的 git checkout
行定义。
要在 git checkout
之后执行其他操作,请将其添加到脚本中 git 结帐行之后。应该这样做:
#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
cd /var/www/domain.com && composer install
注意我用的是composer
install
,不是composer update
。这是有充分理由的。
composer update
可能不会产生您在开发期间使用的确切依赖项。例如,如果您依赖 some/lib:1.2.*
,您可能会在您的开发机器上获得版本 1.2.1
,稍后在您的生产机器上获得 1.2.2
。更糟糕的是,也许您正在使用类似 dev-master
的东西,在这种情况下,环境之间可能存在 主要 差异。
In order to get the latest versions of the dependencies and to update the composer.lock
file, you should use the update
command.
与 the documentation for install
比较(强调我的):
The install
command reads the composer.json
file from the current directory, resolves the dependencies, and installs them into vendor
.
php composer.phar install
If there is a composer.lock
file in the current directory, it will use the exact versions from there instead of resolving them. This ensures that everyone using the library will get the same versions of the dependencies.
If there is no composer.lock
file, Composer will create one after dependency resolution.
如果您提交 composer.lock
文件 as recommended,composer install
将在您的服务器上为您提供与您在其他地方使用的相同的版本。
这是我的实际 post-receive
挂钩:
#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
有什么方法可以让我在文件已经在文件夹中后 运行 命令?
我要运行composer update
钩子脚本只是一个 shell 脚本(在您的示例中由 /bin/sh
执行)。您的脚本当前只有一个命令,由您已有的 git checkout
行定义。
要在 git checkout
之后执行其他操作,请将其添加到脚本中 git 结帐行之后。应该这样做:
#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
cd /var/www/domain.com && composer install
注意我用的是composer
install
,不是composer update
。这是有充分理由的。
composer update
可能不会产生您在开发期间使用的确切依赖项。例如,如果您依赖 some/lib:1.2.*
,您可能会在您的开发机器上获得版本 1.2.1
,稍后在您的生产机器上获得 1.2.2
。更糟糕的是,也许您正在使用类似 dev-master
的东西,在这种情况下,环境之间可能存在 主要 差异。
In order to get the latest versions of the dependencies and to update the
composer.lock
file, you should use theupdate
command.
与 the documentation for install
比较(强调我的):
The
install
command reads thecomposer.json
file from the current directory, resolves the dependencies, and installs them intovendor
.php composer.phar install
If there is a
composer.lock
file in the current directory, it will use the exact versions from there instead of resolving them. This ensures that everyone using the library will get the same versions of the dependencies.If there is no
composer.lock
file, Composer will create one after dependency resolution.
如果您提交 composer.lock
文件 as recommended,composer install
将在您的服务器上为您提供与您在其他地方使用的相同的版本。