¿Cómo podemos enviar código a varios servidores? Tenemos muchos servidores que necesitan tener la misma copia del código. Es difícil presionar al servidor individual. Sé que mercurial tiene ganchos, pero ninguno de ellos da una solución adecuada.¿Cómo presionar el código a varios servidores por Mercurial?
Respuesta
En el servidor central se crea un gancho changegroup.
Así que su servidor central tendría la siguiente hgrc:
[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3
Es posible tener varios ganchos para el mismo evento, por lo que no debería ser un problema.
La ventaja del gancho changegroup sobre el gancho del conjunto de cambios es que se ejecuta con mucha menos frecuencia.
En su archivo .hg/hgrc
debe tener una directiva [paths]
, que contiene su ubicación predeterminada. ¿Qué pasa con la adición de algo como:
[paths]
default = http://server1
server2 = http://server2
y luego hacer un:
hg push default
hg push server2
sí, ese es el problema. Conozco esta solución, lo que quiero es un gancho o un gatillo que, al presionar con éxito al servidor 1, se inicie automáticamente el envío al servidor2. La solución anterior siempre tiene la posibilidad de olvidarse de presionar a un servidor. Por cierto, gracias por una respuesta rápida. – Akshay
He enfrentado un problema de cadena de empuje automático. ¿Resuelve o no? –
supongo que uno de los servidores es un repositorio maestro, el resto son implementaciones. en tal situación, interactuaría solo con el maestro y dejaría las implementaciones hasta cron:
cat >$HOME/bin/dist <<'EOM'
#!/bin/sh
cd ${1:?}
tip=$(hg tip --template '{node}')
for r in $remotes; do
hg push -r $tip $r
done
EOM
chmod +x $HOME/bin/dist
(crontab -l; echo '*/5 * * * * $HOME/bin/dist /var/repos/master') | crontab -
huh .. ¿qué pasará si más de una confirmación ha sido presionada en menos de 5 minutos? :-). En este caso, es mejor configurar un gancho "changegroup". Además, cuando un conjunto de cambios está creando una rama, sería necesario presionar con la opción -f (fuerza). Mi consejo, si quieres usar cron en lugar de un gancho, sería configurarlo en las máquinas remotas que regularmente generarían cambios: de esta forma, puede haber más de un conjunto de cambios (por lo que incluso puedes extraer cada horas de ejemplo), y también pull no requiere la opción -f. Solo mi 0.02 €. Saludos, Christophe. La solución de –
funciona bien. 'empujar' empuja 'punta' y todos sus antepasados, por lo que obtendrán todo. Sin embargo, hay un montón de código innecesario, puede usar el nombre 'consejo' en lugar de usar la plantilla para aprenderlo (-r toma nombres muy bien), y puede omitir el -r param todo junto y simplemente 'pulsar' predeterminado para propina. Es probable que desee push -f, ya que puede necesitar insertar nuevas ramas y nuevas cabeceras en algún momento y no desea que la secuencia de comandos falle. –
@ ry4an: no puede usar el nombre 'tip', ya que podría apuntar a un conjunto de cambios diferente antes de que la secuencia de comandos llegue del servidor1 al servidor3.esa es precisamente la razón por la que no puedes dejar de lado el '-r': si quieres que todos los retrovisores tengan la misma sugerencia después de cada inserción, debes apegarte a la misma revisión para todo el script. el comentario '-f' es válido, sin embargo. –
- 1. Escribir código de varios servidores
- 2. Mercurial: ¿cómo presionar a la rama predeterminada?
- 3. Comunicación entre varios servidores
- 4. Implementación de varios servidores
- 5. Escalar un servidor postgres a varios servidores
- 6. Escalar cronjobs en varios servidores
- 7. Mercurial: Cómo administrar el código común/compartido
- 8. django-apio en el entorno de producción de varios servidores
- 9. ¿Distribuye hilos Java en varios servidores?
- 10. Certificado de SSL único en varios servidores
- 11. Maven Implementar en varios servidores Tomcat
- 12. Java: sincronización de subprocesos en varios servidores
- 13. ¿Cómo funcionan varios servidores en sincronización para la aplicación web?
- 14. Código de mudanza de mercurial a TFS
- 15. ¿Cómo presionar Procfile a Heroku?
- 16. ¿Cómo presionar a github desde cloud9?
- 17. Sincronización de índices de Lucene.net en varios servidores de aplicaciones
- 18. ¿Cómo puedo alojar un repositorio de Mercurial para varios usuarios?
- 19. Cómo inicializar el proyecto de código de Google en Mercurial
- 20. Al usar Mercurial HG, ¿cómo obtener el último código?
- 21. Implementación de una aplicación Web.py con WSGI, varios servidores
- 22. Mantener los archivos cargados sincronizados en varios servidores - PHP Linux
- 23. TFS 2010: implementar en varios servidores después de la compilación
- 24. TFS2010 Definición de compilación para implementar en varios servidores?
- 25. Con Mercurial, ¿cómo puedo "comprimir" una serie de conjuntos de cambios en uno antes de presionar?
- 26. Código :: Bloques: cómo compilar varios archivos fuente
- 27. ¿Es posible compartir HttpRuntime.Cache entre varios servidores web?
- 28. ¿Cómo funcionaría un programador de tareas como el cuarzo cuando tiene varios servidores?
- 29. Cómo separar el código CUDA en varios archivos
- 30. La mejor manera de agregar varios archivos de registro desde varios servidores
Esta es la mejor solución, ya que solo se activará si la inserción en el servidor 1 tuvo éxito. Probablemente necesites 'push -f' en esas líneas de gancho de grupo de cambio si estás trabajando con historias de branchy. –
Agregado -f opción –
El código necesita edición para que funcione. Mercurial le permite [realizar múltiples acciones por evento] (http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html) ** agregando una extensión al final ** de un el nombre del gancho. Extiende el nombre de un gancho al dar el nombre del gancho, seguido de un punto (el carácter "."), Seguido de un texto más de tu elección. Por ejemplo, Mercurial ejecutará commit.foo y commit.bar cuando ocurra el evento commit. –