我们有一个中央 Git 存储库,开发人员可以从中获取和推送更改。他们在默认的主分支上进行更改。我们的持续集成 (CI) 工具从这个默认的主分支构建工件,并且是负责将我们想要测试的东西提升到“UAT”分支的实体(这实际上是由构建主管人员单击将进行促销的 CI 工具网页)。CI 工具还负责将代码从 UAT 提升到“生产”分支。UAT 和生产分支的目的是捕获提升到 UAT 和生产的内容。UAT 分支上没有开发,生产将仅包含不常见的“热修复”形式的“开发”,因为我们的开发/发布迭代非常快(1 周迭代)。
如果我们可以轻松做到这一点,我们希望设置一个控件,以防止有人错误地直接对 UAT 和生产分支进行开发更改。一种想法是在中央服务器上安装一个挂钩,以确保只有 CI 工具用户才能对 UAT 和生产进行更改。我们还认为我们可以有一个开发人员使用的中央仓库,它只包含主分支,并有一个包含 UAT 和生产分支的第二个仓库。CI 工具将与两个 repos 进行通信——它将查看 repo 的开发以查看何时有更改,并使用第二个 repo 将其推广到 UAT 和 Production 分支。
这是人们通常会做的事情吗(为了开发和推广目的而单独的回购?)它会比服务器挂钩方法更好吗?