目前我一个项目部署到生产使用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