2009-07-20 19 views
6

¿Hay diferentes métodos para almacenar archivos binarios en SVN? en caso afirmativo, ¿qué son y cómo modifico las opciones de almacenamiento?métodos para almacenar archivos binarios en SVN

leí que hay 4 formas de almacenar archivos binarios en SVN:

  1. comprimido alquitrán - importación - exportación.
  2. alquitrán - importación - exportación.
  3. importación - exportación.
  4. Efficient check-in.

¿Cuáles de esos son los más útiles para la eficiencia de tiempo? y ¿cómo configuro el SVN para usar cualquiera de esos métodos?

Gracias, Oded.


Tengo muchos archivos binarios de pequeño tamaño y algunos de gran tamaño. Todos son cambiados frecuentemente Actualmente estoy trabajando en CVS y cambiando a SVN pronto y quería saber cómo almacenar binarios.

Leí Subversion de la optimización del rendimiento (mencionado anteriormente) y me pareció útil, pero no se hicieron ejemplos, así que no entendí exactamente cómo hacer cada una de las 4 formas que sugirió.

Mi pregunta básica es el clima o no los valores predeterminados son buenos (y ¿qué son?) Mi primera consideración es el tiempo eficiente y luego el espacio. Gracias :)

Respuesta

3

No establece Subversion para utilizar ninguno de esos métodos, especifica qué método usar al colocar archivos en el repositorio. Y por "método", no me refiero a ninguno de los 4 que mencionas, sino que simplemente "importa" o "confirma", y tendrás que seguir contándole a Subversion el método elegido cada vez que quieras almacenar un nuevo revisión de ese archivo en el repositorio.

Ver Performance tuning Subversion.

Como puede ver en la descripción de allí, para usar el "método 1", comprimir a tar y luego usar la importación, tienen que comprimir todos los archivos binarios en un archivo .tar, y luego usar la importación comando de Subversion para agregar los archivos en el repositorio.

Tenga en cuenta también que el comando de importación almacena los archivos como archivos nuevos, no como deltas a una revisión anterior, por lo que puede ser eficiente en tiempo, pero no eficiente, si se han realizado pocos cambios en un archivo grande comprometido.

Subversion por sí solo solo confirma y importa. Un compromiso es una nueva revisión de un archivo existente, almacenado como una secuencia de deltas (o la primera revisión de un archivo nuevo, que no lo es), y una importación es solo un archivo nuevo. Cualquier otra cosa que deba hacer usted mismo.

Si los archivos binarios solo se cambian de vez en cuando, podría valer la pena investigar más, pero si se cambian regularmente, sugiero simplemente usar Subversion de forma normal, con el comando de confirmación.

También tenga en cuenta que el consejo típico cuando se trata de archivos binarios es que en lugar del archivo binario almacena el código fuente a lo que sea que produce esos archivos binarios, si es posible, y luego vuelve a ejecutar las herramientas para reproducir los archivos binarios reales Si los archivos binarios requieren tiempo o tiempo para reproducirse, solo entonces almacenará los archivos binarios en cuestión.

Los archivos binarios tienen el problema de no ser realmente buenos para comparar, y si el desarrollador a y b recupera la última versión, y luego el desarrollador a confirma una nueva revisión antes de que el desarrollador b intente hacer lo mismo, algún tipo de el conflicto ocurrirá Es posible que al desarrollador B no le quede otra opción que tratar de descubrir los cambios por sí mismo.


Editar: Quisiera hacer hincapié en lo que entendemos por cometió y de importación.

La principal diferencia es que COMMIT, suponiendo que ya tiene el archivo en el repositorio, intentará diferenciar el archivo en su copia de trabajo con la versión del repositorio anterior, y solo almacenará los cambios. Esto tomará tiempo y memoria, para resolver esas diferencias, pero típicamente resultará en un pequeño conjunto de cambios de revisión en su repositorio. En otras palabras, el espacio de disco en su servidor Subversion se verá menos afectado que con el comando IMPORT.

IMPORT, por otro lado, importará el nuevo archivo como si acabara de darle un nuevo archivo y dijera "olvídese del anterior, simplemente almacene este archivo", y así no se gastará tiempo ni memoria en resolviendo las diferencias, pero el conjunto de cambios resultante en el repositorio será más grande. En otras palabras, el espacio de disco en su servidor Subversion se verá más afectado que con el comando COMMIT, pero IMPORT generalmente se ejecutará mucho más rápido.

Cualquier otro flujo de trabajo que desee imponer debe realizarse fuera de Subversion. Esto incluye el comando TAR y las opciones de compresión disponibles en su sistema operativo. Si desea utilizar el "método 1", usted mismo debe comprimir manualmente los archivos que desea importar en un único archivo .tar antes de otorgarlo a Subversion. No puede pedirle a Subversion que haga nada de eso por usted. Por supuesto, puede crear archivos de script que automaticen el proceso de alguna manera, pero aún así, no es un problema de Subversion.

Me gustaría hacer algunas pruebas serias con esto para averiguar si las ganancias realmente valen la pena el trabajo extra que impondrá en su flujo de trabajo de Subversion.

+0

¿Estás diciendo básicamente que las únicas 2 opciones son IMPORTAR y COMPROMETER? y que Import tiene la opción de importar un archivo comprimido tar (comprimido a mano) o los archivos regulares? cuál de 3 es eficiente en el tiempo? gracias :) – Oded

+0

IMPORT importará lo que sea que le des, ya sea el archivo original, un archivo tar, un archivo gzip, un archivo zip, un archivo rar, lo que sea. COMPROMETER también. La diferencia es que COMMIT tratará de diferenciar el archivo con su revisión de repositorio anterior, mientras que IMPORT no lo hará, por lo que será más rápido, pero tendrá más espacio si hay cambios de la revisión anterior, a diferencia de los nuevos contenidos radicales de archivos . –

+0

Creo que lo entiendo ahora. ¿En VisualSVN puedo configurar el motor de almacenamiento para archivos binarios o no hay otra opción que hacer esto manualmente o escribir scripts? – Oded

1

¿Podría describir su situación con más detalle?

¿Tiene varios archivos binarios pequeños que cambian todos juntos? ¿Algunos archivos binarios grandes que cambian de forma independiente? ¿Tus archivos cambian con frecuencia?

¿De verdad ha descubierto que los valores predeterminados no son lo suficientemente buenos? Siempre acabo de agregar archivos binarios de la misma forma que lo normal y me pareció que funcionaba. Como cualquier problema de rendimiento, no trataría de complicar las cosas a menos que tenga una buena razón para hacerlo, en cuyo caso, comparta esa razón con nosotros.

Cuestiones relacionadas