Flujo de trabajo de desarrollo web

Definitivamente es hora de que aprenda sobre el control de fonts, y git en particular.

Hago mucho desarrollo web y la mayoría de las veces hago un gran trabajo de desarrollo en el server de producción en vivo. Sé que esto es realmente malo.

Simplemente no entiendo cómo desarrollo local y luego implementarlo en un sitio en vivo con git works.

Es el siguiente cómo podría funcionar:

  1. Configure un entorno en mi máquina local que esté lo más cerca posible de mi server web

  2. Cree una carpeta de git donde desarrollaré mi proyecto (o descargue el proyecto existente desde el server en vivo).

  3. Cuando esté listo para impulsar mis cambios, consíguelos en git.

De lo que no estoy seguro es de lo siguiente:

  • ¿Cómo enviar mis cambios al server en vivo?
  • ¿Qué sucede si borro accidentalmente mi copy local?
  • ¿Qué pasa con mi database? Si agrego nuevas tablas y datos en mi máquina local, ¿tendré que hacer estos cambios manualmente en mi server en vivo también?

EDITAR

Sí, lo siento, no hay suficiente detalle.

Hago toda mi encoding en Coda para Mac, tengo algunos proyectos diferentes sobre la marcha, pero la mayoría de estos son PHP / YII corriendo en Apache. La database de elección es MySQL.

PHP sale sin procesar.

Si su website no requiere compilation, puede optar por implementarlo directamente desde el repository de Git.

  • Haga su desarrollo en su caja local, como lo haría normalmente.
  • Compruebe su código en Github u otro sitio como con frecuencia
  • Como no necesita comstackr su sitio, su copy de Git casi está list para usar
  • O desea excluir directorys .git del service APACHE, o eliminarlos después de "clon git"

Su database es otro problema. Probablemente:

  • Escribir scripts para hacer cambios en su database en lugar de hacerlos en una interfaz de usuario
  • Incluya un sello de versión en algún lugar (tal vez en la database) identificando el esquema actual
  • Asigne un nombre a sus scripts con los numbers de versión de la database (también guardo un indicador de la revisión del código asociado que se requiere para la compatibilidad: lo estamito automáticamente con el ID del set de cambios de Git)
  • En order, ejecute todos los scripts más grandes que la revisión actual de la database (pero no más grande que la revisión actual del software. También programé este process)

Haces todo esto en pedazos en tu máquina de desarrollo como si lo estuvieras haciendo en producción. Cuando es hora de irse, todavía es probable que realmente quiera probar:

  • marque su revisión con un nombre de twig amigable, como Release23a o lo que elija, para que pueda encontrarlo más tarde
  • replique su database de producción a un entorno de testing (los problemas de datos en vivo que pueden bloquear las actualizaciones a mitad de path son un DOLOR)
  • Implemente todo el package en un entorno de testing, ejecute scripts MySQL y realice su export Git (usando su nuevo nombre de sucursal)

Entonces, probablemente continuarás trabajando y registrándote en Git como de costumbre. A menudo, estarás en el medio de la implementación de un código feo y necesitas un parche rápido para tu sitio en vivo. Pero no quiere simplemente piratear el código en su sitio en vivo. En lugar:

  • Mira tu Release23a
  • Haga su revisión
  • Verifíquelo como de costumbre (se saveá en la twig Release23a)
  • Etiquetarlo de nuevo, Release23b
  • Implementar como antes (Release23b)
  • Combina Release23b de nuevo en tu línea de código principal

Una nota rápida sobre ramificación. Siempre puede regresar y get CUALQUIER versión que haya marcado por date / hora, pero es más fácil encontrarla por su nombre. Además, una vez que se bifurca, puede trabajar en esa twig y luego volver a registrarla. Ahora tiene una bifurcación en sus líneas de código. Está haciendo cambios en el calor de ayer, y no se está aplicando automáticamente al calor de hoy. Si QUIERES eso, debes fusionarlo manualmente. Fusionar es el process de decir "cliente de Git, intente aplicar automáticamente todas las ediciones del código desde el delta Release23a / Release23b a mi último hotness".

Como puede ver, tiene algunas herramientas muy interesantes disponibles con Git. Eliminar su código local no es un problema, suponiendo que haya sido bueno y se haya registrado con frecuencia.

Tenga en count que Git tiene el concepto de compromisos locales. Esos no guardan su trabajo de un locking de disco duro hasta que se sincroniza.

  • ¿Cómo enviar mis cambios al server en vivo?

Lo que recomendaría es usar GitHub para alojar su repository, o crear uno propio. Luego, puedes git clone un repository en tu carpeta de desarrollo, y lo mismo en tu server de producción.

Haría cambios en su carpeta de desarrollo local, y cuando esté listo, empújelos a su repository de GitHub. Luego, entrarías al server y obtendrás los cambios del repository de GitHub.

  • ¿Qué sucede si borro accidentalmente mi copy local?

Tienes otro en GitHub y también en tu server de producción.

  • ¿Qué pasa con mi database? Si agrego nuevas tablas y datos en mi máquina local, ¿tendré que hacer estos cambios manualmente en mi server en vivo también?

A less que tenga un script, que puede poner en git, y no tiene ninguna replicación de la database, entonces tendría que hacerlo manualmente.

Aquí hay algunos enlaces útiles para responder sus pocas preguntas.

Para el uso de git: flujo de trabajo de Git

Para pautas para el mantenimiento de sucursales: model de ramificación

Para actualizar el server: Tela

También soy algo así como un novato Git. Sin embargo, este model de flujo de trabajo de Git parece único y simple una vez configurado:

http://joemaller.com/990/a-web-focused-git-workflow/

Puede que no sea el flujo de trabajo adecuado para usted, pero una vez que sepa cómo funciona Git, puede proporcionar una solución de bajo mantenimiento.

Este es un gran lugar al que ir si necesita ayuda para configurar el entorno local / git / live: http://www.mybringback.com/bringers/14509/git-local-and-shanetworking-server-development-environment-with- ssh-setup /

En cuanto a la architecture de la database, deberá escribir algunas secuencias de commands de implementación o deberá realizar las modificaciones en su entorno local y en vivo a mano.

Espero que eso ayude?