¿Cómo puedo usar ganchos posteriores a la confirmación para copiar archivos comprometidos a un directorio web desde SVN?

StackOverflow https://stackoverflow.com/questions/140614

  •  02-07-2019
  •  | 
  •  

Pregunta

Mi servidor Ubuntu tiene instalados Apache y Subversion. Utilizo este servidor como un servidor provisional, solo con fines de prueba. Uso Apache para alojar la aplicación web y Subversion para mantener copias versionadas del código fuente.

Mi flujo de trabajo actual:

  • Realizar cambios en un archivo
  • Confirma el archivo en el repositorio de Subversion
  • Cargue el archivo nuevo a través de SFTP en el directorio público de Apache
  • Ver los cambios en mi navegador web

Sería mucho más feliz si mi flujo de trabajo fuera así:

  • Realizar cambios en un archivo
  • Confirma el archivo en el repositorio de Subversion
  • En segundo plano, Subversion coloca una copia del archivo confirmado en el directorio público de Apache
  • Ver los cambios en mi navegador web

Tengo muy poca experiencia en administración de servidores, y agradezco cualquier ayuda o punteros. Escuché que los ganchos posteriores a la confirmación son lo que necesito, y que puedo escribir scripts de bash para hacer esto, pero no estoy seguro de por dónde empezar y realmente no encontré nada después de mucho googlear.

¡Gracias!

Otros consejos

Se puede hacer, pero impulsar automáticamente cada confirmación al sitio web de producción no siempre es una buena idea. A veces hay otros cambios que deben llevarse a cabo, y romper el sitio porque el nuevo código está allí, pero el esquema de la base de datos aún no se ha actualizado es simplemente vergonzoso.

Lo que tiendo a hacer en su lugar es hacer que el servidor pague una copia de svn, luego, una vez que estoy listo con todo lo que tiene que suceder, hago una actualización de svn en él.

Pero si realmente lo desea, puede poner comandos en el activador posterior a la confirmación, que hará todo automáticamente por usted. Esto podría incluir ejecutar un script de migración en el servidor (si existe uno para este cambio), para encargarse de cualquier cambio que no sea de código que deba ocurrir.

Creo que la pregunta general real que deberías hacerte a ti mismo --- que quizás ya te has hecho, por supuesto --- es esta: "¿cómo puedo probar mi código más fácilmente? antes de implementarlo? "

Creo que una buena respuesta es instalar Apache en su cuadro de desarrollo y ejecutarlo como su propio usuario, con webroot y / o ruta cgi en / home / richardhenry / src / mywebsite (o donde sea mira tu código).

De esa manera, puede probar su código sin siquiera comprometerse. Como resultado, no ensuciará su tronco con confirmaciones rotas o inútiles. En general, mantener independientes las cosas independientes tiende a ser una buena idea (TM).

Alternativamente, sincronice el servidor web con su directorio de trabajo con rsync, o escriba una secuencia de comandos que empuje sus archivos desde el cuadro de desarrollo a su servidor provisional y agregue una regla Makefile que ejecute su secuencia de comandos (o llame a rsync) . Si quiere ser realmente elegante, use inotify o algún otro monitor de notificación de archivos para ejecutar su script automáticamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top