我正在寻找一款我希望有人构建的软件。我将在这里描述这个软件,希望有人听说过这样的事情,并能指出我正确的方向。
我正在开发一个部署在 Heroku 上的网络应用程序。由于 Heroku 的限制,我陷入了为同一个存储库拥有四 (4) 个远程 Git 存储库的不幸境地。
为什么是四个?
我们在 Heroku 上有多个“应用程序”。一个用于生产和几个登台“应用程序”。这些都是针对同一个实际应用程序的,但在 Heroku 上它们是单独的“应用程序”,因此我们可以在将它们推向生产之前在暂存中进行尝试。
Heroku 上的每个应用程序都有自己独立的 Git 存储库,并在master
每次将新提交推送到该分支时自动部署该master
分支。Heroku 的这项政策是我们问题的症结所在。因为这意味着我们在 Heroku 上有 3 个不同的存储库,以及我们的 GitHub 存储库。
为什么有 4 个不同的 Git 遥控器会出现问题?因为这意味着当您开发和创建新提交时,您必须(1)仅推送到一个远程或(2)推送到所有远程。
做(1)意味着考虑你想推送到哪个遥控器。我讨厌不得不考虑这个问题。当我开发时,我不关心遥控器,我承诺并推动并重新开始工作。例如,如果我想将一个分支部署到登台服务器 1 中,我会将该分支合并到该staging_1
分支中并推送它。我不喜欢选择要推送到哪个遥控器。
(1) 的另一个缺点是您的遥控器不同步。
我想要的是(2)。我希望每个推送操作都推送到我们所有的四个存储库。
但这有两个问题:
问题 1:Heroku 上的暂存“应用程序”部署了master
. 我不希望他们那样做。我想将staging_1
我的仓库中的master
分支映射到登台服务器 Git 仓库上的分支。
问题 2:让我的计算机推送到所有 4 个存储库需要很长时间。即使是 1 Heroku 推送操作也需要很长时间。有时可能需要 40 秒。
建议的解决方案
这就是我想要的。我想要一个专门的 Git 服务器来充当代理。每当我从本地计算机推送到这个 Git 服务器时,它会将这些相同的分支推送到我们的 4 个并行存储库中。这样,从我的本地计算机的角度来看,推送似乎是即时的,而此代理服务器将在后台自动处理 Heroku 存储库。
如果推送到 4 个遥控器中的任何一个由于任何原因失败,我希望这个代理以某种方式报告回来,这样我就会知道有什么东西坏了并可以修复它。
该代理必须做的另一件事是master
映射。每次我将staging_1
分支推送到它时,它都会将它推staging_1
送到所有遥控器,但是对于属于登台服务器的遥控器,它也会将该分支推送为master
,因此 Heroku 会知道部署它。
(很遗憾,Heroku 的设计方式让我需要这样的代理,但这就是我必须处理的。)
就是这样了。这就是我想要的解决方案。有人知道这样的程序吗?