我有一个php项目,当我从另一个存储库中取出并且composer.lock文件被更改时,我应该运行composer.phar install --dev
.git如何自动警告我/问我是否要运行此命令?我想某种钩子可以解决这个问题,但是我怎样才能获得有关拉入之前和之后发生了什么变化的信息?
mvp*_*mvp 21
这取决于您拉动时使用的选项:
你可以编写自己的合并后git钩子:
这个钩子是由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
Run Code Online (Sandbox Code Playgroud)
你可以编写自己的post-checkout git hook:
更新工作树后运行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
Run Code Online (Sandbox Code Playgroud)
这是我个人的git钩子.