SVN para el server web de desarrollo

Revisé otros temas sobre este tema, pero nada realmente responde mi pregunta exacta. Actualmente estoy desarrollando un sitio que actualiza datos en un server web en vivo (generalmente fotos) varias veces al día usando un cron y algunas fonts de datos externas. Además, estamos a punto de permitir datos enviados por el usuario. Ahora, quiero comenzar a usar svn porque el proyecto se está haciendo lo suficientemente grande donde se está empezando a complicar bastante y la gente está editando nuestro código en el server en vivo. He instalado svn para apache y todos los subdominios mencionados a continuación están configurados en un server usando vhosts. Todavía no hemos comenzado a usar este flujo de trabajo, así que si pudiera get algún consejo antes de comenzar, sería muy apreciado.

De acuerdo, entonces he configurado un repository en un subdominio (http://svn.website.com) y lo he comprobado en un subdominio de desarrollo (http://dev.website.com). También planeo verificar una copy en el entorno en vivo (http://www.website.com). La idea es desarrollarse primero en el subdominio de desarrollo, comprometerse cuando esté listo para entrar en funcionamiento y luego svn up el entorno en vivo. He leído los pros y los contras entre exportar y actualizar, y la actualización parece ser la mejor para este proyecto porque a menudo cometemos pequeños ajustes / cambios de código y exportar parece exagerado. También configuré las directivas apropiadas para evitar el acceso al directory .svn. ¿Parece que estoy en el path correcto con esto? ¿Algo de lo que deba ser consciente?

Si la siguiente es una buena manera de encargarse de todo, entonces podemos pasar a la segunda pregunta. Los datos enviados por el usuario (principalmente fotos) se cargan en el entorno en vivo. Tengo que gestionar esto de alguna manera entre el entorno en vivo y el de desarrollo para que podamos desarrollar con files actualizados enviados por el usuario. Realmente no sé cuál es la mejor manera de hacerlo … Siento que hay un defecto grave si svn add svn ci cada vez que se envía un file. Cuál es la mejor manera de lograr esto?

¡Parece que estás creciendo!

Primero, me pregunto si SVN es realmente la mejor opción. Supongo que ya lo sabes, has trabajado con él, como otros en tu equipo, y quieres seguir con eso. Está bien, pero solo un FYI he usado SVN y Git y encontré que Git generalmente es más fácil de usar, y yo diría que cada vez es más utilizado por los desarrolladores de aplicaciones.

En cuanto a su flujo de trabajo, solía pasar por un process casi idéntico con un gran equipo distribuido y funcionó bien. Dependiendo de la cantidad de tráfico que reciba, podría sugerir una estrategia de implementación de producción diferente. Cuando esté listo para un nuevo impulso de producción, clone en un nuevo directory, labeldo tal vez por la date o los nombres de los hitos, y cree un nuevo host virtual para ese directory. De esa forma, obtienes un par de beneficios:

  1. No corre el riesgo de que alguien acceda a su aplicación y solicite un determinado file que está en process de actualización.
  2. Puede volver fácilmente a un hito anterior simplemente cambiando el host virtual de producción activa. Los errores y problemas salen del desarrollo, independientemente de cuán minuciosamente lo pruebes, y a veces son lo suficientemente serios como para justificar la reversión a una base de código previa. Por supuesto, los cambios en el esquema agregarían complejidad a esto, pero si solo estamos hablando de código, esto debería evitar que la confirmación frenética revierte a las 2 a. M.

Esto fue sugerido por Rasmus Lerdorf en una conferencia a la que asistí cuando le hicieron casi la misma pregunta que usted hace.

En cuanto a garantizar que los desarrolladores trabajen con el set de files más reciente, ¿realmente quieres hacer esto? Si está procesando una gran cantidad de imágenes, ocupará mucho espacio en el disco duro. Claro que con un CDN u otro almacenamiento masivo no es gran cosa, pero ¿quieres que tus desarrolladores tengan que download 1000 nuevas fotos cada vez que se instalen?

Si estás decidido a hacer esto, te sugiero agregar un código dentro de tu aplicación para hacer automáticamente un svn add, svn ci cuando el estado de svn tiene un resultado determinado (es decir, este es un script que puedes llamar con cron, o cada vez que se agregan nuevos medios). También puede consultar el uso de svn hooks (git también tiene estos) para hacer cosas como notificarle que el repository ha sido actualizado.

Espero que esto ayude. Desalentaría encarecidamente include todos los files que carguen los usuarios a less que tengan una razón realmente fuerte para hacerlo. La complejidad que va a agregar va a ser un dolor =)

¡Buena suerte y bienvenido a StackOverflow!