Git
使用 git 在伺服器上部署開發和主分支
我正在使用
git
一個django
網路項目。我的伺服器上有一個裸露的 git 儲存庫,並將我的送出從本地機器推送到其中。我的本地機器上也有一個測試伺服器,但我想在伺服器上有 2 個版本的網站。一個版本作為實時站點(主分支),一個版本作為測試伺服器(開發分支)。所以我需要2個工作目錄。我想用
post-receive
鉤子來
- 更新我的主分支工作目錄(用於伺服器上的實時站點)
- 更新我的開發分支工作目錄(用於我在伺服器上的測試站點)
通常我會做
$ cat > hooks/post-receive #!/bin/sh GIT_WORK_TREE=/path/www.example.org git checkout -f $ chmod +x hooks/post-receive
但我猜 GIT_WORK_TREE 似乎不是正確的選擇?有沒有更好的辦法?
如何定義分支的工作目錄?
根據digitalocean而不是 GIT_WORK_TREE 的文章,您需要 –work-tree 和 –git-dir 選項的組合:
git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f
對於接收後腳本,它最終的構造與您所擁有的略有不同:
#!/bin/bash while read oldrev newrev ref do if [[ $ref =~ .*/master$ ]]; then git --work-tree=/var/www/html --git-dir=/home/demo/proj checkout -f fi done
建議:
#!/bin/sh echo echo "*** Moving to Live ***" echo cd /path/to/project || exit unset GIT_DIR git pull origin master echo echo "*** Pulling to Live ***" echo /etc/init.d/nginx restart #exec git-update-server-info
從我的伺服器上拿來,對我來說效果很好。
不要忘記修復路徑、遠端和重啟命令。