2

我正在使用git post-receive 挂钩从三个服务器(开发、测试和生产)上的三个分支(主分支、暂存分支和稳定分支)部署 Web 应用程序的版本。分支和服务器之间的配对目前在脚本中是硬编码的。但是我想取消这个限制,让这个钩子可以管理无限数量的分支。可以通过以下方式完成:

  • 将所有每个分支的配置选项移动到一些单独的文件中,例如.git/???/<branch_name>
  • 主脚本将检查此类文件是否可用于每个分支,获取它,然后使用该文件中的配置参数部署在远程服务器上。

但是我不知道.git我可以将这些文件放在目录中的确切位置。或者也许有更好的解决方案?

4

1 回答 1

2

据我所知,您的选择:

  • 对服务器命名使用更严格的约定,这样就不需要在基本域名之外进行配置。将其留在脚本中。(即,branchX -> branchX-deploy.example.com。)

  • 按照您的建议,在 .git 目录中的任何位置放置一个配置文件。如果它不是 git 关心的文件名,它永远不会注意到它。不过,我不确定您为什么要这样做。

  • 把它放在 .git/config 中。Git 允许您定义任意形式的配置参数branch.<name>.foo。(我不知道这是一个功能还是一个疏忽。据我所知,它没有记录在案。)在你的情况下,branch.master.deploy_server设置为development.example.com. 然后,您的脚本可以遍历所有分支,并检查是否设置了该配置选项。(使用git config --get。)

  • 在您的存储库中放置一个配置文件。这似乎比把它藏起来要好得多。您不妨跟踪设置。如有必要,提供一种覆盖它们的方法 - 提供不同的配置文件作为参数,提供单独的分支/服务器作为选项,交互式提示,任何适合你的东西。

就个人而言,我可能会做最后一个。跟踪设置,即使它们只是默认设置,也不会伤害您。

于 2010-11-11T16:55:18.387 回答