¿Cómo implementar mejor Control de versiones para desarrollo web?

Los sistemas de control de versiones son obviamente importantes en proyectos de desarrollo, pero su uso en proyectos de desarrollo web parece ser más complejo, con el requisito de tener un server web para ejecutar todas las aplicaciones web less las más simples.

Con esto en mente, he buscado y descubierto algunos methods diferentes para usar el control de versiones en proyectos de desarrollo web:

  1. Proporcione a cada desarrollador una máquina virtual que sea una réplica del server de desarrollo y haga que el desarrollador ejecute su copy de trabajo de la aplicación en la máquina virtual.

  2. Haga que cada desarrollador use un subdominio en el server de desarrollo, por ejemplo, john.project.com y descargue su copy de trabajo de la aplicación a los directorys a los que apunta el subdominio.

  3. Utilice el sistema de control de versiones para verificar el código, realice un cambio, confirme el código y luego verifíquelo en el server de desarrollo (que apunta al jefe del repository).

Puedo ver un inconveniente de que 1 es el time adicional requerido para crear las máquinas virtuales y asegurar que las máquinas virtuales se mantengan sincronizadas con el server de desarrollo (también la necesidad (?) De cambiar continuamente el file de host de los desarrolladores para apuntar a la máquina virtual no el server de desarrollo).

Puedo ver que 2 posiblemente sea un problema si se usan URL absolutas dentro del sitio a less que haya una manera fácil de actualizar la configuration para usar los nuevos subdominios también.

3 es el más fácil de configurar pero es bastante primitivo y, presumiblemente, será bastante tedioso para un desarrollador seguir revisando el código después de cada cambio de hora.

¿Cómo han sido los usuarios de control de la versión utilizada de stackoverflow con los proyectos de desarrollo web y qué método / flujo de trabajo fue más efectivo?

También incluya methods adicionales que no he pensado / leído.

Pruebe una combinación de 1 + 3.

# 1: Proporcione a cada desarrollador una máquina virtual que sea una réplica del server de desarrollo y haga que el desarrollador ejecute su copy de trabajo de la aplicación en la máquina virtual.

No me gustan las máquinas virtuales, tal vez porque estoy ejecutando el mismo sistema operativo en el que se ejecuta el server. Actualizar y mantenerlo sincronizado es una tarea que puedo hacer sola (una vez por semana: "simplemente instale el package XYZ"). Cada mes, más o less, puede congelar una VM para realizar una copy de security (o para otorgarla a nuevos desarrolladores).

Es el mejor método para el desarrollador. No tiene que esperar a que suceda un compromiso / deployment. Cambia una línea de código, guarda el file, presiona F5 en el browser, listo. Para una mejor eficiencia, ese es el path a seguir.

# 3: Usa el sistema de control de versiones para verificar el código, realiza un cambio, confirma el código y luego verifícalo en el server de desarrollo (que apunta al jefe del repository).

Realmente recomendaría configurar un server de transición / desarrollo. Cada vez que alguien se compromete con el Control de versiones, el server debería get automáticamente la versión más nueva y reiniciar el server web. De esta forma, otras personas pueden echar un vistazo al producto en funcionamiento y dar su opinión.

Pareces haber omitido otra opción, que para la mayoría de los desarrolladores .NET de ASP.NET es común.

4) Extraiga el código fuente del repository, desarrolle el control local de nuevo. Esto es realmente lo mismo que el enfoque VM, simplemente no hay VM. En ASP.NET, usted usa IIS localmente o el server de desarrollo de Visual Studio.

De lo que estás hablando no es solo el control de versiones sino también un Build Server.

Depende del idioma en el que esté escribiendo, si es Java que CruiseControl con SVN / Github, si es c # entonces Team Foundation Server o CruiseControl.Net con SVN / GitHub

La mayoría de los sistemas de control de versiones le permitirán ramificarse y fusionarse, y luego usar su Servidor de compilation lo puede implementar en cualquier server web que desee. Eso debería resolver sus subdominios de desarrollador por separado.