2017-07-17 49 views
0

我正在嘗試使用git將更改部署到本地託管的服務器上的站點。當我將更改從本地目錄推送到開發服務器時,post-receive鉤子提供了我期望的反饋,如果它正在工作,但它實際上並不改變工作樹中的任何文件。Post-Receive Hook不會錯誤但不會複製文件

此外,我在Mac開發和網站託管在網絡上共享的Windows服務器上,並安裝到/卷/ 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 

的裸倉庫位於我標記爲「測試」的遠程位置。當我發出以下命令,我得到下面的輸出在我的終端...

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

您正在檢出當前的HEAD。你確定這是連接到'master'分支?爲什麼依靠這個?嘗試檢查'master'。小點:'如果[[$ ref = * master]]'是你所需要的, – jthill

+0

我會試一試。這個腳本是基於我從數字海洋中獲得的一個,所以我只是用他們的建議。聽起來很好,但是。 – unclesol

+0

這個伎倆!發佈它作爲答案,我會將其標記爲正確。 – unclesol

回答

0

您正在查看當前的HEAD。你確定這是附屬於主分支?爲什麼依靠這個?請嘗試檢出master

小點,if [[ $ref = */master ]](或者只要我們安全,所有,@ torek指出,if [[ $ref = refs/heads/master ]])是你需要的。

相關問題