【发布时间】:2013-09-29 09:37:05
【问题描述】:
我在我的服务器上创建了一个裸 git repo,并从this blog 设置了以下接收后挂钩:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ]; then
git --work-tree=/path/to/my/project/live/ checkout -f $branch
echo 'Changes pushed live.'
fi
if [ "develop" == "$branch" ]; then
git --work-tree=/path/to/my/project/dev/ checkout -f $branch
echo 'Changes pushed to dev.'
fi
done
这样每当我在本地推送到我的服务器时,更改都会自动发布到每个分支的文件夹中,而无需手动拉取。
我将正确的权限设置为同时使用 dev 文件夹:
drwxrwsr-x 2 git git 4096 Sep 29 12:10 live/
drwxrwsr-x 2 git git 4096 Sep 29 12:09 dev/
从开发分支推送按预期工作。当我签出主分支并进行合并时会出现问题。当我推送 master 时,新文件被复制到我服务器上的 live 文件夹中,但我在本地删除的文件没有被删除。
如何让 post-receive 正确更新 live 文件夹?谢谢!
【问题讨论】:
标签: git git-post-receive