【发布时间】:2011-11-22 10:48:10
【问题描述】:
目前我使用 git 将项目部署到生产环境,使用 git push production master 到具有以下接收后挂钩的存储库:
#!/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 钩子使用接收到的分支名称来部署到正确的路径? (这甚至可能吗?)
【问题讨论】:
标签: git deployment githooks environments