我正在使用git post-receive hook在三台服务器(开发,测试和生产)上从三个分支(master,staging和stable)部署Web应用程序的版本。分支和服务器之间的配对目前在脚本中是硬编码的。但是我想删除这个限制,并使这个钩子可以管理无限数量的分支。它可以通过以下方式完成:
.git/???/<branch_name>
但是我不知道.git
目录中的确切位置可以放置这些文件。或者可能有更好的解决方案?
答案 0 :(得分:2)
据我所知,你的选择是:
使用更强的约定进行服务器命名,因此除了基本域名之外,不需要配置。把它留在脚本中。 (即branchX - &gt; branchX-deploy.example.com。)
将配置文件放在.git目录中的任何位置,就像您建议的那样。如果它不是git关心的文件名,它就永远不会注意到它。我不确定为什么你想要这样做。
将它放在.git / config中。 Git允许您定义branch.<name>.foo
形式的任意配置参数。 (我不知道这是一个功能还是疏忽。据我所知,它没有记录。)在你的情况下,像branch.master.deploy_server
这样的东西设置为development.example.com
。然后,您的脚本可以通过所有分支,并检查是否设置了该配置选项。 (使用git config --get
。)
将配置文件放入存储库。这似乎比隐藏它要好得多。您也可以跟踪设置。如有必要,提供一种覆盖它们的方法 - 提供不同的配置文件作为参数,为各个分支/服务器提供选项,交互式提示,适合您的任何内容。
就个人而言,我可能会做最后一次。跟踪设置,即使它们只是默认设置,也不会对您造成伤害。