Estoy trabajando en un pequeño equipo con hasta 5 desarrolladores (web). Debido a que nuestro equipo está creciendo con frecuencia y tuvimos problemas con varias personas trabajando en el mismo código, decidimos configurar un VCS.
Situación actual
Actualmente estamos trabajando con un servidor de desarrollo central (LAMP). Por lo tanto, cada desarrollador trabaja en la misma base de código y si el código está probado y listo para nuestro servidor en vivo, simplemente lo copiamos a través de ftp. Sé que esto es una especie de flujo de trabajo anno 1600, pero sí, es lo que es y también la razón de esta pregunta.
En el servidor de desarrollo, nuestra estructura de directorios se ve así:
/var/www
/Project1
/Project2
/Project3
...
Además, hay algunas aplicaciones pequeñas que no son aplicaciones web: aplicaciones de Android / iPhone / Windows 8, etc. y algunas herramientas de C # que también deben incluirse en el VCS.
Meta y problemas
Nuestro objetivo es obtener una configuración limpia para un VCS, que funciona junto con un software de seguimiento de problemas, nos permite trabajar juntos en el mismo proyecto al mismo tiempo sin sobrescribir nuestros códigos y simplemente nos da la ventaja del control de versiones.
Creo que la primera pregunta para nosotros es qué tecnología deberíamos usar. Algunos de nosotros ya hemos experimentado la subversión. Pero debido a que git se está convirtiendo en el "estándar" y hay muchos argumentos "pro git" entre los usuarios de la web, tendemos a usar git.
Ahí comienza nuestra incertidumbre. Para usar git, un VCS descentralizado, parece que tenemos que comenzar a usar servidores de desarrollo separados en la computadora de cada desarrollador. Los problemas con eso son:
- Algunas veces trabajamos en diferentes computadoras, así que cuando nos olvidamos de presionar nuestro código tenemos un problema.
- Tendríamos que trabajar con máquinas virtuales porque los servidores de desarrollo deberían ser los mismos que nuestro servidor en vivo (Esto simplemente no sería exigible en nuestro entorno, créanme que no es posible).
- El servidor de desarrollo generalmente también servía como un servidor de "prueba" o "presentación" donde los no desarrolladores tenían un vistazo de lo que estaba sucediendo.
¿Hay otra configuración posible con git para que podamos beneficiarnos del sistema mientras todavía usamos un solo (!) Servidor de desarrollo? Quizás con diferentes directorios para cada desarrollador. ¿O podemos seguir trabajando en la misma base de código tal vez bloqueando los archivos en los que estamos trabajando y luego enviarlos a un repositorio? Quizás sea importante decir que, si bien se convirtió en un factor para nosotros, todavía es poco común que varios desarrolladores trabajen en la misma parte de una aplicación al mismo tiempo.