2010-03-08 11 views
10

Esto es lo que estoy tratando de hacer:¿Tirando automáticamente del servidor remoto con Git push?

Tengo un repositorio GitHub, del cual me gustaría hacer visible la web. En este momento he clonado el repositorio en mi propio servidor y funciona bien, pero para mantenerlo actualizado, tengo que iniciar sesión manualmente y extraer los últimos cambios.

No estoy seguro de si esta es la mejor idea (o el mejor enfoque), pero me gustaría que el servidor remoto se active automáticamente cada vez que alguien empuje al repositorio. GitHub hace que sea fácil ejecutar un script cuando alguien presiona, pero no estoy seguro de cómo hacerlo una vez que alguien hace eso.

Estaba usando PHP para simplificar, pero simplemente hacer algo como git pull, naturalmente, no funciona debido a los permisos. ¿Es esta una mala idea o hay otra forma de lograr lo que quiero hacer? Esto parece una configuración común, pero no estaba seguro.

Gracias.

Respuesta

2

Si es fácil de ejecutar secuencias de comandos para empuje, podría ganchos de configuración para empujar:

  • de GitHub a un (worktree vacío) repo desnuda en su servidor web
  • de tu repositorio desnudo en su servidor web a su cesión temporal "en vivo" (con un worktree que representa su sitio web)

continuación, se puede asociar eso con un gancho en el "en vivo" de repositorios para actualizar sí mismo (a través de un "git merge", fusionando el contenido de su repositorio desnudo a y nuestro repositorio "en vivo"), siempre que su repo simple empuje cualquier cosa.

Obtiene el efecto que desea: cualquier inserción en su repositorio de GitHub (para una cierta rama, supongo) activará una actualización de su repositorio de servidor web "activo".

1

He hecho algo que funciona casi exactamente de esta manera, excepto que el repositorio "remoto" que recibe el empuje está en la misma máquina que el repositorio que luego tira. Es cierto (e importante) que exactamente el mismo conjunto de usuarios tiene permisos en ambos repositorios. (Pero esto debería estar bien, no quieres que personas al azar empujen tu repositorio). En cualquier caso, simplemente tengo el gancho git post-update llamado un script de shell que hace la atracción por mí. El único inconveniente es que tienes que limpiar el entorno (utilicé env -i, o puedes deshacer las variables relacionadas con git), de lo contrario, la extracción se confunde.

Cuestiones relacionadas