Estoy buscando un programa que espero que alguien haya creado. Voy a describir este software aquí esperando que alguien haya escuchado algo así y pueda orientarme en la dirección correcta.Git proxy que empuja a múltiples controles remotos
Estoy desarrollando una aplicación web que se implementa en Heroku. Debido a las limitaciones de Heroku, me encuentro en la desafortunada situación de tener cuatro (4) repositorios Git remotos para el mismo repositorio.
¿Por qué cuatro?
Tenemos varias "aplicaciones" en Heroku. Uno para la producción y un par de "aplicaciones" de escenificación. Estos son todos para la misma aplicación, pero en Heroku son "aplicaciones" separadas, por lo que podríamos probar la puesta en escena antes de llevarlos a la producción.
Cada aplicación en Heroku tiene su propio repositorio de Git separado, y automáticamente implementa la rama master
cada vez que se envía una nueva confirmación a esa rama master
. Esta política de Heroku es el quid de nuestro problema. Porque esto significa que tenemos 3 repositorios diferentes en Heroku, además de nuestro repositorio de GitHub.
¿Por qué es un problema tener 4 mandos a distancia diferentes de Git? Porque significa que cuando desarrolla y crea nuevas confirmaciones, tiene que (1) presionar solo un control remoto o (2) enviar a todos los controles remotos.
Hacer (1) significa pensar a qué control remoto desea presionar. Odio tener que pensar en esto. Cuando desarrollo, no me importan los controles remotos, me comprometo y presiono y vuelvo al trabajo. Si quiero implementar una rama en el servidor de transición 1, por ejemplo, fusionaría esa rama en la rama staging_1
y la presionaré. No me gusta elegir a qué control remoto presionar.
Otra desventaja de (1) es que los controles remotos no están sincronizados.
Lo que quiero es (2). Quiero que cada acción de empuje empuje a todos nuestros cuatro repositorios.
Pero hay 2 problemas con eso:
Problema 1: La puesta en escena "aplicaciones" en Heroku desplegar lo que está en master
. No quiero que hagan eso. Quiero asignar la rama staging_1
en mi repositorio a la rama master
en el repositorio Git del servidor de transferencia.
Problema 2: Hacer que mi computadora presione a los 4 reposs tomará un largo tiempo. Incluso 1 acción push de Heroku lleva mucho tiempo. Puede tomar 40 segundos a veces.
solución propuesta
Esto es lo que quiero. Quiero tener un servidor especializado de Git que actúe como un proxy. Cada vez que presiono desde mi computadora local en este servidor de Git, insertará esas mismas ramas en nuestros 4 repos en paralelo. De esa manera, desde la perspectiva de mi computadora local, el impulso parecerá instantáneo, mientras que este servidor proxy tratará automáticamente los repositorios Heroku en segundo plano.
Si falla la pulsación de cualquiera de los 4 controles remotos por algún motivo, quiero que este proxy me informe de alguna manera, así sabré que algo está roto y podría solucionarlo.
Otra cosa que este proxy tendrá que hacer es la asignación master
.Cada vez que presionaría la rama staging_1
hacia ella, la insertaría como staging_1
en todos los controles remotos, pero para el control remoto que pertenece al servidor de transición también empujará esa rama como master
, por lo que Heroku sabrá desplegarla.
(es bastante triste que Heroku está diseñado de tal manera que me hace necesito un proxy como este, pero eso es lo que tengo que tratar.)
Así que es eso. Esa es la solución que quiero. ¿Alguien sabe de un programa así?
El problema 1 se resuelve mediante: 'git push staging staging_1: master' - es decir, empujando su rama local de staging_1 en el maestro del control remoto de transición. –
Y es posible que https://github.com/fastestforward/heroku_san ayude con una secuencia de comandos de implementación que podría hacerlo por usted pero que seguiría siendo lenta en 4 repositorios. –