¿Cómo implementaría git en un caso en el que solo hay un único entorno para pruebas, desarrollo y producción y los desarrolladores cambian el código en vivo a través de SFTP?

(Esta es una respuesta de “modo de supervivencia”, no una respuesta de “diseñar el sistema perfecto”).

Cuando haces un “guardar” en este entorno estás haciendo dos cosas:

  • Despliegue a producción
  • Grabar una nueva versión del trabajo que hiciste

Acercarse a pasar la prueba de Joel significa separar estos dos.

Pero probablemente tengas una fecha límite próxima y no puedas dedicar demasiado tiempo a cosas “meta”, ¿verdad?

Lo primero que haría es automatizar el proceso de “implementar mi directorio de trabajo actual en producción”. Escriba una secuencia de comandos que realice un rsync o sftp o lo que sea para tomar su versión local completa del proyecto y hacer que la versión del servidor sea idéntica a esa. De esa manera, si alguien “pisa” sus cambios, puede cambiarlos. No es muy agradable, pero (1) esto le dará algo de tiempo para mejorar y (2) puede compartir su script de implementación con otros desarrolladores cuando lo necesiten.

Ahora tiene la capacidad de hacer rápidamente que la versión que se ejecuta en producción sea idéntica a la versión que se ejecuta en su sistema de desarrollo. El siguiente paso es hacer lo contrario: tomar lo que se está ejecutando en producción en su directorio de trabajo.

Ahora puede comenzar a usar Git localmente. Comprométase cuando haya realizado una unidad lógica de trabajo. Cuando agarres lo que sea que la gente ha cambiado en el sistema de producción, compromételo. Estás a medio camino.