it-swarm-es.com

¿Cómo combino los cambios de una copia de desarrollo del sitio al sitio en vivo sin perder contenido nuevo?

¿Cuál es el mejor procedimiento para combinar el trabajo realizado en una copia de desarrollo de un sitio con la copia de producción en vivo? Muchas veces se ha agregado una gran cantidad de contenido nuevo al sitio desde que comenzó el desarrollo de las funciones más recientes. Y la mayoría de las adiciones a un sitio implicarán cambios en la base de datos. Copiar cualquier archivo nuevo es fácil, pero ¿qué pasa con la base de datos? ¿Cómo combina sus cambios con la base de datos de producción existente sin perder el contenido nuevo que se agregó desde la última vez que actualizó el sitio de producción? ¿Hay algún módulo que ayude con esto?

40
Chaulky

Para ver los tipos de contenido, las vistas y los cambios de estructura en el sitio de desarrollo, utilice Características para exportar la base de datos a código.

Para la migración de contenido hay muchas opciones, pero no una sola solución sólida. Un ejemplo es el Paquete de implementación .

16
budda

He adoptado básicamente dos escuelas de pensamiento aquí (una tercera escuela de pensamiento, haciendo diferencias en la base de datos, no discutiré porque la complejidad es bastante alta).

1) Implemente soltando la base de datos de producción e importando un mysqldump de la base de datos de desarrollo. Opcionalmente, ejecute una búsqueda/reemplazo de expresiones regulares de antemano en cualquier enlace absoluto codificado que haga referencia a la URL del desarrollador en el volcado de SQL. Después de importar el dev db en prod, ejecute automáticamente sentencias SQL (generalmente a través de script) para cambiar cualquier configuración que sea diferente para prod que para dev (por ejemplo, tal vez tenga en la tabla de variables algunas configuraciones de conexión para conectarse a sistemas externos que necesita cambie para apuntar a sistemas externos prod en lugar de a la versión de desarrollo).

2) Use el módulo Características , como lo menciona budda, para la configuración de administración, y use el módulo Exportación de nodos para la exportación/importación de contenido en combinación con el Eliminar Todos módulo. Entonces el flujo de trabajo es:

  1. use node_export y características para exportar nodos/características a archivos
  2. Opcionalmente (y con suerte) control de versiones
  3. Cargar archivos en el sistema prod
  4. Use la interfaz drush o admin para cargar funciones
  5. Utilice drush delete-all o la interfaz de administración para eliminar todos los nodos de los tipos que desea importar
  6. Utilice drush ne-import o la interfaz de administración para importar los nodos del archivo de nodos que exportó.

Una nota, sugeriría adoptar un flujo de trabajo estándar, donde el contenido va solo en una dirección. O Dev -> Prod o Prod -> Dev (prefiero este).

He hecho esto, y lo estoy haciendo en algunos sistemas grandes, con resultados bastante buenos, pero siempre habrá muchas formas de cortar esta Apple, elija la que mejor funcione para usted.

2
coderintherye

Bases de datos de volcado de copia de sitio en vivo y copia de desarrollo de sitio en archivo SQL (use los mismos parámetros y configuraciones para ambos volcados).
Luego, compare ambos archivos SQL usando una pequeña herramienta de comparación ExamDiff . Mostrará las diferencias de archivos lado a lado con diferentes colores. Puede saltar directamente a las diferencias también (sin desplazamiento). Examine las diferencias y agregue/edite líneas al archivo SQL del sitio en vivo. Asegúrese de que no haya una ruta/URL absoluta del entorno de desarrollo en ese archivo. ¡Eso esta terminado! Hora de restaurar la base de datos para el sitio en vivo.
Hacerte la vida más fácil: En el primer paso, volcar solo las tablas que han cambiado. Por ejemplo, si ha editado un módulo en la copia de desarrollo que se dirige a una tabla separada, volcar solo esta tabla. Si no está seguro acerca de una tabla en particular, todo el volcado de la base de datos está bien.

1
user931