我有一个 php 项目,当我从另一个存储库中提取并且composer.lock 文件发生更改时,我应该运行composer.phar install --dev
。 git 如何自动警告我/询问我是否要运行这个命令?我想某种挂钩可以解决这个问题,但是我如何才能获得有关拉入之前和之后发生的变化的信息呢?
这取决于您在拉动时使用什么选项:
无选项:运行 git fetch 和 git merge
你可以自己写合并后 git hook https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_post_merge:
该钩子由 git merge 调用,当在本地存储库上完成 git pull 时会发生这种情况。该钩子采用一个参数,一个状态标志,指定正在进行的合并是否是挤压合并。这个钩子
不会影响 git merge 的结果,如果由于冲突而合并失败,则不会执行。
这个钩子应该适合你(将其保存为可执行文件.git/hooks/post-merge
):
#!/bin/sh
CHANGED=`git diff HEAD@{1} --stat -- $GIT_DIR/../composer.lock | wc -l`
if [ $CHANGED -gt 0 ];
then
echo "composer.lock has changed!"
composer.phar install --dev
fi
--rebase :运行 git fetch 和 git rebase
你可以自己写结账后 git hook https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_post_checkout:
更新工作树后运行 git checkout 时会调用此挂钩。该钩子被赋予三个参数:前一个 HEAD 的 ref、新 HEAD 的 ref 以及一个指示签出是分支签出还是文件签出的标志
这个钩子应该适合你(将其保存为可执行文件.git/hooks/post-checkout
):
#!/bin/sh
CHANGED=`git diff $1 $2 --stat -- $GIT_DIR/../composer.lock | wc -l`
if [ $CHANGED -gt 0 ];
then
echo "composer.lock has changed!"
composer.phar install --dev
fi
UPDATE
Here is 我个人的 git hooks 集 https://github.com/greg0ire/git_template.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)