推送到多个远程设备的Git代理

推送到多个远程设备的Git代理,git,heroku,proxy,Git,Heroku,Proxy,我正在寻找一个软件,我希望有人已经建成。我将在这里描述这个软件,希望有人听说过类似的东西,并能为我指出正确的方向 我正在开发一个部署在Heroku上的web应用程序。由于Heroku的局限性,我陷入了一个不幸的境地:同一个回购有四(4)个远程Git回购 为什么是四个 我们在Heroku上有多个“应用程序”。一个用于生产,两个用于登台的“应用程序”。这些都是针对同一个实际应用程序的,但在Heroku上它们是独立的“应用程序”,因此我们可以在将它们推向生产之前在舞台上进行尝试 Heroku上的每个应

我正在寻找一个软件,我希望有人已经建成。我将在这里描述这个软件,希望有人听说过类似的东西,并能为我指出正确的方向

我正在开发一个部署在Heroku上的web应用程序。由于Heroku的局限性,我陷入了一个不幸的境地:同一个回购有四(4)个远程Git回购

为什么是四个

我们在Heroku上有多个“应用程序”。一个用于生产,两个用于登台的“应用程序”。这些都是针对同一个实际应用程序的,但在Heroku上它们是独立的“应用程序”,因此我们可以在将它们推向生产之前在舞台上进行尝试

Heroku上的每个应用程序都有自己独立的Git repo,并在每次将新提交推送到
主分支时自动部署
主分支。希罗库的这一政策是我们问题的症结所在。因为这意味着我们在Heroku上有3种不同的回购协议,加上我们的GitHub回购协议

为什么有4个不同的Git遥控器会出现问题?因为这意味着在开发和创建新提交时,您必须(1)只推送到一个远程或(2)推送到所有远程

做(1)意味着思考你想推到哪个遥控器。我讨厌去想这个。当我开发的时候,我不在乎遥控器,我承诺、推动并重新开始工作。例如,如果我想将一个分支部署到stagingserver1中,我会将该分支合并到
staging\u1
分支中并推送它。我不喜欢选择按哪个遥控器

(1)的另一个缺点是遥控器不同步

我想要的是(2)。我希望每一次推动行动都能推动我们的四次回购

但这有两个问题:

问题1:Heroku上的登台“应用程序”部署了
master
上的内容。我不想让他们那样做。我想将我的repo中的
staging_1
分支映射到staging server Git repo上的
master
分支

问题2:将我的计算机推送到所有4个回购协议将花费很长时间。即使是一个Heroku推送动作也需要很长时间。有时可能需要40秒


提议的解决办法 这是我想要的。我希望有一个专门的Git服务器作为代理。每当我从本地计算机推送到这个Git服务器时,它都会并行地将这些分支推送到我们的4个repo。这样,从我的本地计算机的角度来看,推送看起来是即时的,而这个代理服务器将在后台自动处理Heroku repo

如果4个遥控器中的任何一个因任何原因推送失败,我希望这个代理以某种方式报告,这样我就知道有什么东西坏了,可以修复它

这个代理必须做的另一件事是
master
映射。每次我将
staging_1
分支推送到它,它将作为
staging_1
推送到所有远程设备,但对于属于staging服务器的远程设备,它也将作为
master
推送到该分支,因此Heroku将知道如何部署它

(很遗憾,Heroku的设计让我需要这样一个代理,但这正是我必须处理的。)


就这样。这就是我想要的解决方案。有人知道这样的节目吗?

我觉得这有点疯狂。我在Heroku上有多个运行不同环境的应用程序。我有一个Github repo,然后是针对不同环境的Heroku遥控器。我还倾向于维护一个Git分支,该分支与一个Heroku Remote相匹配

然后(正如John所说)通过以下方式完成部署:

我在这里记录了这一基本方法:

然而,据我所知,您需要完全自动化。您可以使用这样的服务来为您做这类事情,观察Git分支,然后在测试套件通过时推送到远程分支(例如Heroku remote)


我很确定TDDium方法将为您提供所需的信息,并增加一层CI。

创建一个新的存储库,您可以在希望推送传播时推送到该存储库,并编写一个post-receive钩子,以便在您推入此repo时传播更改。

问题1可以通过以下方法解决:
git-push-staging\u 1:master
-即将本地staging\u 1分支推入staging-remote的master。您可能会发现,部署脚本会对您有所帮助,但部署到主机时仍然很慢4回购协议。
git push heroku_remote local_branch:master