目前我一個項目部署到生產使用Git,使用git push production master
到資源庫具有以下後收到鉤:部署一個網站,以多種環境使用Git
#!/bin/bash
GIT_WORK_TREE=/home/username/www.example.com/myproject/ git checkout -f
production
是遠程,通過git remote add production ssh://server/home/username/projects/myproject.git
增加。
但現在我需要部署一個單獨的分支到服務器上的一個單獨的路徑。我確實想出了一個解決方案,但我想有一個更好的方法來做到這一點。
我所做的就是創建服務器,myproject-alternate.git
上一個新的存儲庫,具有相似的後收到鉤(與/myproject-alternate/
更換/myproject/
),加入這個新的存儲庫git remote add alternate ssh://server/home/username/projects/myproject-alternate.git
。現在我可以使用git push alternate branchname:master
部署到備用路徑。
這工作,但我有一些問題:
- 的命令部署到備用服務器是不是我所期待的,不止一次,我忘了
:master
末和服務器的存儲庫收到新分支和post-receive掛鉤未被觸發。 - 我不確定在服務器上創建新的存儲庫是否是最佳解決方案,我不知道大型項目會發生什麼情況。
是否有其他方法可以在沒有提到的問題的情況下完成此部署流程?也許更好的post-receive鉤子使用收到的branchname部署到正確的路徑? (這是甚至可能嗎?)
在測試之前,您能否解釋'branch = $ {3 ## * /}'行? – dipnlik
它刪除匹配模式'* /'的最長前導子字符串。 –
...從哪個字符串? (抱歉再次提問,我真的很想了解整行代碼,並且我不能Google上有這麼多符號的東西) – dipnlik