2010-11-17 23 views
5

El problema que tenemos es que un cliente nos proporciona contenido para incluir en las versiones, y esto incluye una gran cantidad de archivos de video. Su contenido generalmente va en SVN pero dado que no tienen acceso a él, versionar estos grandes archivos binarios en realidad no parece encajar bien con SVN. Nuestras pruebas no requieren estos archivos (solo tenemos que probar que podemos lanzar un video si se encuentra) y no somos responsables de verificar/probar el contenido suministrado por el cliente.¿Directorio de SVN sin versión?

Entonces, me preguntaba si es posible tener un directorio SVN que no esté versionado, y es solo un directorio regular que aún se puede extraer al actualizar/verificar. O tal vez SVN tiene una forma de extraer archivos de una fuente que no sea SVN, algo así como svn: externals pero sin mirar otro repositorio?

¿Existe una solución SVN para esto, o si queremos evitar la versión de los archivos deberíamos simplemente ponerlos en otra tienda y configurar una secuencia de comandos de compilación/implementación para extraerlos por separado?

+1

No estoy seguro de cómo interpretar su pregunta ... ¿no se resolvería esto estableciendo 'svn: ignore *' en dicho directorio y sin comprometer nada allí? – Archimedix

+0

Tenga en cuenta que la pieza "todavía se tira al actualizar/retirar". – gimpf

+2

Sin embargo, si desea controlar la versión de archivos grandes, SVN no impone límites especiales o algo así. Para una mejor separación, es posible que desee considerar el uso de ramas dedicadas como alternativa a 'svn: external' para árboles que contienen estos objetos grandes y fusionar el árbol de archivos no grandes contra ellos según sea necesario. – Archimedix

Respuesta

1

¿El problema es el puente entre su cliente y el repositorio SVN, o la versión de los archivos binarios?

Para la segunda, creo que no hay gran problema. Leer desde aquí: http://help.collab.net/index.jsp?topic=/faq/svnbinary.html

Tenga en cuenta que si un archivo es binaria no afecta a la cantidad de espacio repositorio utilizado para almacenar los cambios a ese archivo, ni afecta a la cantidad del tráfico entre el cliente y el servidor . Para propósitos de almacenamiento y transmisión , Subversion usa un método diferente que funciona igual de bien en los archivos binarios y de texto ; esto es completamente sin relación con el método diferente usado por el comando svn diff.

Dado que el control de versiones de archivos grandes puede ser descortés para los desarrolladores al actualizar/realizar pequeños cambios, puede utilizar una serie de ramas dedicadas.

+0

@JB Jansen - es el video NO las imágenes diminutas – ajreal

+0

Aunque creo que esta respuesta no es perfecta en su forma, sigue siendo correcta. ¿Por qué fue downvoted? – gimpf

+0

¿Y qué? ¿Se usa demasiado espacio en el disco? Es insignificante en comparación con el valor de una buena gestión de proyectos. Tenga en cuenta que no estoy solo para recomendar el control de versiones de estos archivos. –

4

Alas no, subversion almacena todas las versiones comprometidas con ella - no hay ninguna bandera que establecer para decirle que conserve solo la última versión. Tal vez un día después de implementar obliterate, pero no contenga la respiración esperando eso :)

Básicamente, no hay una solución SVN para esto, por lo que debe consultar un servidor de administración de documentos o simplemente una tienda de archivos por separado

Sin embargo, hay una opción que podría funcionar para usted, si utiliza TortoiseSvn, puede usar su client-side hooks para extraer automáticamente los archivos de video del almacén de archivos al sistema local.

La alternativa para una solución de subversión total es almacenar sus archivos de video en ella normalmente, pero luego regularmente volcar/filtrar/cargar el repositorio para limpiar las versiones anteriores. esto puede llevar algo de tiempo si los archivos de video son muy grandes, así que no estoy seguro de si los recomiendo, pero si los almacenó en su propio repositorio, simplemente podría obtener la última versión, eliminar todo el repositorio y volver a importar el archivo que acaba de reinicializar el repositorio con 1 versión. Ahorra espacio, y podría contener secuencias de comandos, pero probablemente no valga la molestia de simplemente decirle a todo el mundo que "elimine sus archivos de video" \ server \ videos ".

0

No sé si lo hice bien pero como Hasta donde lo he entendido, estás buscando el aislamiento entre tu código y los enormes archivos binarios de tu cliente.

¿Qué hay de esto, prepara un repositorio SVN dedicado separado para sus archivos de gran tamaño. Otorgue acceso al cliente solo a ese repositorio. Use svn: externals para extraer estos archivos en el árbol de códigos.

SVN hacer manejar grandes archivos binarios bastante bien y si se los pone en un acuerdo de recompra por separado que no contaminará tu repositorio de código.

+0

No se puede confiar en los usuarios con SVN. –

Cuestiones relacionadas