接收后挂钩不会出错但不会复制文件

时间:2017-07-17 16:25:36

标签: git git-post-receive

我正在尝试使用git将更改部署到本地托管服务器上的站点。当我将更改从本地目录推送到开发服务器时,后接收挂钩提供了我期望的反馈,如果它正常工作,但它实际上并没有更改工作树中的任何文件。

此外,我正在使用mac进行开发,该网站托管在网络上共享的Windows服务器上并挂载到/ Volumes / I $

这是钩子脚本

#!/bin/bash

GIT_DIR=/Volumes/I$/intranet_dev
WORK_TREE=/Volumes/I$/intranetdev

while read oldrev newrev ref
do
    if [[ $ref =~ .*/master$ ]];
    then
        echo "Master ref received.  Deploying master branch to test server..."
        mkdir -p $WORK_TREE
        git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f
        echo "Git hooks deploy complete"
    else
        echo "Ref $ref successfully received.  Doing nothing: only the master branch may be deployed on this server."
    fi
done

裸存储库位于我标记为“test”的遥控器上。当我发出以下命令时,我在终端中得到以下输出......

computername:intranet username$ git push test master
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 566 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
remote: Master ref received.  Deploying master branch to test server...
remote: Git hooks deploy complete
To /Volumes/I$/intranet_dev
   1d9eb1f..f49b533  master -> master

这一切都看起来应该如此,但是不会复制更改的文件。

1 个答案:

答案 0 :(得分:0)

您正在查看当前的HEAD。你确定附加到主分支?为什么要依靠那个?请尝试签出master

小点,if [[ $ref = */master ]](或者只要我们安全,所有,if [[ $ref = refs/heads/master ]]正如@torek指出的那样)就是你所需要的。