2010-06-01 14 views
6

Soy un principiante de Git con preguntas sobre el flujo de trabajo. Aprendí muchos comandos, y sé cómo funcionan las cosas, pero parece que no puedo entender el flujo de trabajo correcto. Me encanta tener algunas sugerencias. [Nota, yo soy el único desarrollador trabajando en mis proyectos]Git + Drupal workflow

  1. Una vez un amigo me dijo que era la mejor manera de trabajar en el servidor en vivo en lugar de que en el servidor local para evitar encontrarse con problemas específicos del medio ambiente. ¿Esta verdad?

  2. Uso el mismo tema base para todos mis sitios de Drupal. Cuando hago un cambio en uno, actualmente necesito copiarlo y pegarlo en otros 10 lugares. ¿Hay alguna manera de mantener este tema base en un solo lugar y tener otros sitios extraídos de él? Github tal vez?

  3. Si quiero hacer una copia de seguridad 'completa' de la base de datos y el código - ¿la única manera de hacerlo es exportar la base de datos como un archivo sql y comprometerlo todo?

¡Gracias por la ayuda!

Terry

Respuesta

5
  1. En general, se debe ejecutar la prueba en el servidor tan cerca del servidor de producción como sea posible, pero no en el servidor real en vivo, como que va a romper un sitio en vivo durante las pruebas. Debido a que Drupal está diseñado para funcionar bien en una variedad de servidores, el uso de servidores similares no es tan relevante.

  2. Debe usar git pull en lugar de copiar y pegar. Debido a que git tiene un diseño descentralizado, realmente no necesitas una ubicación central como github. Si eso es útil para su flujo de trabajo, úselo, pero si no es así, puede obtener directamente de un servidor a otro.

  3. No existe una gran solución para que Drupal almacene tanta información de configuración en la base de datos y la mantenga sincronizada. Sincronizar toda su base de datos es un enfoque. Muchos módulos también tienen productos exportables, que básicamente guardan los datos de la base de datos en código para que pueda sincronizarlos con el resto de su código. Features es probablemente la forma más sencilla de experimentar con el modelo exportable y ver si eso funciona para usted.

+0

Gracias por la respuesta de Scott. Así que, básicamente, para # 2 (mismo tema base para múltiples sitios), que debe: 1. Hacer git repo en/themes/base-tema de alguna parte 2. Realizar todos los cambios/edita aquí 3. Clon este repo en todas mis sub dominios 4. Git tirar de los cambios a los subdominios Gracias de nuevo, Terry – saltcod

+0

que cambiaría 1. a/sites/all/themes/base-tema, pero por lo demás sí. (Por lo general, es mejor mantener las cosas personalizadas fuera del directorio raíz de temas y módulos para que puedan actualizarse más fácilmente con Drupal). –

+0

Estoy de acuerdo con todas las respuestas de Scott, pero podría argumentar que es posible sitio web en Git (incluida la base de datos). Para ver un informe completo, consulte: http://www.opc.com.au/web-development/drupal-release-management-drush-and-git Divulgación: escribí el artículo. @markdorison también hace una buena observación sobre el uso de los módulos Strongarm y Context. –

2
  1. entiendo el punto de su amigo, pero creo firmemente en desacuerdo con el funcionamiento (potencialmente, se equivocan, probablemente) roto código de desarrollo en un servidor de producción. Mejor, descargue VirtualBox y configure una máquina virtual con la misma configuración que el servidor en el que se despliega. Use git para crear "etiquetas" para cada versión que implemente, de modo que tenga puntos de referencia útiles para las "versiones" de su sitio web.
  2. Mira "submódulos de git". Es casi seguro que tenga que saber cuáles son estos, pero si proviene de un contexto de subversión probablemente los encontrará muy confusos. Los submódulos son básicamente referencias a otros repositorios, por lo que tiene un enlace suave a otro proyecto dentro de su proyecto principal. Sin embargo, tienen que ser autocontenidos en un directorio.
  3. Personalmente, me gusta mantener un archivo schema.sql en mi repositorio (solo un esquema en blanco, escrito en SQL) pero no creo que mantener las copias de seguridad completas de la base de datos en el repositorio sería una buena idea, aunque usted puede. Mantenlos separados.

Si eres nuevo en la idea general de los sistemas de control de versiones, es mejor que saltes con ambos pies. Todo comenzará a tener sentido sobre la marcha. Y, por supuesto, por su propia naturaleza es poco probable que haga un daño permanente, ya que puede retroceder y retroceder.

Una recomendación firme: cometer frecuentemente. Cada vez que haces un cambio que funciona, cometer. Las confirmaciones más pequeñas son mucho más fáciles de manejar que las grandes. Por ejemplo, si necesita deshacer un cambio roto, es mucho más probable que pueda deshacerlo sin eliminar un montón del código de trabajo que se cometió al mismo tiempo si sus confirmaciones son atómicas.

1

para volcar una regularidad Drupal db i utilizar

a) un alias de git para la creación de una rama de vacío, sin conexión llamada "db" encontrar el alias en http://gist.github.com/360294

b) la siguiendo los comandos, usando las grandes herramientas de maatkit, vaciar algunas tablas poco interesantes y volcar el archivo db en archivos separados, sin comentarios

mk-find DBNAME --tbllike "cache%" --exec "TRUNCATE %D.%N"; 
mk-find DBNAME --tbllike "watchdog" --exec "TRUNCATE %D.%N"; 
git checkout db && \ 
cd /GITROOT/db && rm -rf * && \ 
mk-parallel-dump -d DBNAME -- mysqldump --skip-extended-insert --skip-comments --skip-lock-tables '%D' '%N' \> '%N.sql' 
0
  1. En general, cuanto más cercanos se encuentren entre sí, mejor. Esto se vuelve especialmente importante cuando se trata de diagnosticar y rastrear problemas. No es que no sea posible tener diferentes configuraciones en cada uno de sus entornos (dev, qa, prod, etc.), pero ciertamente diría que es preferible ser consistente si es posible.

  2. Configurar un repositorio de git para un tema compartido es una gran idea para eliminar los problemas de herencia al copiar/pegar los cambios. Si configura un repositorio git en su propio servidor o utiliza un servicio como github es estrictamente una cuestión de preferencia personal.

  3. Sí, para obtener absolutamente todo en una copia de seguridad, necesita hacer un sqldump de la base de datos además de tener el repositorio de código. Dicho esto, haga un uso liberal del módulo Features y obtenga la mayor cantidad posible de su configuración en código. Esto también ayuda cuando se mueve entre entornos, así como también es capaz de rastrear versiones de sus cambios junto con el resto de su código. Algunos de los elementos más importantes para agregar a sus características será tipos de contenido, puntos de vista, los permisos, las variables (vía Strongarm), la colocación de bloques (a través de Context), menús, etc.