¿Los datos de imágenes deben ir en VCS?

Estamos teniendo una animada discusión sobre esto en mi lugar de trabajo. Estamos hablando de imágenes cargadas por el usuario para un grupo de productos, no imágenes necesarias para mostrar el sitio básico. Digo "de ninguna manera", pero tengo curiosidad por lo que otros piensan.

Actualización: solo para aclarar. Estas son imágenes proporcionadas por el cliente para los productos que están ingresando / modificando.

Estoy de acuerdo con 'no hay forma'.

Cualquier cosa que pueda cambiar en el sitio a través del uso diario, o que sea editable por quien administre el website, lo considero 'contenido'. Esto incluye los files cargados y el contenido de la database, que se respaldan por separado. Nada en el website que está en control de versiones cambia una vez que se ha implementado. Más fácil de esa manera.

Otras forms de preguntar si algo debe estar en el control de la versión:

  • ¿Las imágenes cambian?
  • ¿Los cambios están relacionados con algo más?
  • ¿Se pueden cometer errores?
  • ¿Se busca / necesita rastreabilidad?

Si el rest del sitio está controlado por la versión, la versión controla las imágenes.

Si se generan las imágenes, la versión controla el generador.

Presumiblemente, de lo que está hablando es de contenido que se clasificaría como datos de usuario, a diferencia de los files de proyecto. Eso, aunque es importante, no necesita control de versiones: necesita un viejo mecanismo de respaldo.

Recientemente agregué un nuevo proyecto a un nuevo repository SVN, y cada vez que miro la carpeta 'uploads' me doy count de lo estúpido que era include eso en la confirmación inicial.

Parece que de lo que estás hablando es de contenido que está en (o quizás estará) en una database. Si un cliente le proporciona una list de productos, así como las imágenes de esos productos, entonces todo debe provenir de una database. En este caso, no lo haría porque su database debe estar respaldada, pero no en el VCS.

Si no es así, y su website es estático, lo haría solo porque es "parte del sitio".

Si cree que debe revisarlo, de alguna manera ponga estos resources fuera del path del repository principal y luego dele un repository dedicado solo para ese contenido.

No quiere que todos los que tienen que verificar el código obtengan una copy de cada image cuando finalicen la compra o la actualización, es lento e inútil, y tenerlos en su tree primario tendrá más dolores de cabeza de lo que pueda imaginarse.

/common_ancestor /project_code/ # repository a /resources_dir/ # repository b 

Si tiene que usar enlaces simbólicos o magia del server web para que esto suceda, haga eso, pero haga lo que haga, NO coloque contenido como ese en su repository principal.

En lo que respecta a las copys de security y las revisiones, revisarlas de esta manera te proporciona una ligera facilidad si también usas SVN como método de distribución. De esta forma, si un desarrollador necesita una copy de las imágenes para realizar testings, es relativamente fácil get un set relativamente actualizado de ellos.

Si no va a exponer las versiones a los clientes, ¿cuál sería el punto?

Los clientes ya pueden usar el control de versiones por su count antes de enviar los files. Es posible que desee alentarlos a hacerlo.