2009-08-24 16 views
21

He estado administrando Subversion como un repositorio de almacenamiento de documentos de ingeniería para mi empresa. Está funcionando bastante bien, sin embargo tengo una pregunta sobre cómo los formatos de MS Office 2007 son (deben ser) manejados por Subversion.¿Subversión eficientemente documentos de Office OpenXML?

estoy mirando a una hoja de cálculo de Excel 2007 (.xlsx) en mi copia de trabajo de Subversion que se ha aplicado la svn: mime-tipo propiedad application/octet-stream. Esto significa que Subversion se trata como binario, ¿verdad?

Tenía la esperanza de que los nuevos formatos de documentos de MS Office fueran almacenados eficientemente por Subversion. Según entiendo, se realizará una copia completa de un archivo binario en cada confirmación de ese archivo, mientras que si el archivo es texto, un pequeño cambio en el archivo dará como resultado una pequeña cantidad de datos adicionales que se agregarán a el repositorio (en una situación típica al menos).

No entiendo gran parte de los detalles de XML, pero pensé que un archivo XML era texto y que, por lo tanto, sería almacenado eficientemente por Subversion.

¿Es posible configurar Subversion para que los documentos de MS Office OpenXML se almacenen de manera eficiente?

Seguimiento (2009-11-09): Me he dado cuenta que los documentos de Office pueden ser almacenados como texto sin formato utilizando los formatos de documentos XML 2003 Office (Excel: cálculo XML 2003; Palabra: Word Documento XML. Hay una advertencia sobre pérdida de formato, pero todavía tengo que encontrar ninguna pérdida notable de formato.

+0

ver también: http://stackoverflow.com/questions/1320654/will-subversion-efficiently-store-openxml-office-documents –

+3

@ 0xA3 ¿Está aplicando [recursión] (http://stackoverflow.com/questions/1320654/will-subversion-efficient-store-openxml-office-documents # comment17301597_1320654)? –

+0

Tenga en cuenta que "Documento XML de Word" no es el formato de archivo XML 2003, es decir, el formato de paquete plano Open XML 2007; sería imposible perder datos al guardar en este formato, ya que puede hacer todo lo que un .docx puede hacer . El formato Excel 2003, por otro lado, corre el riesgo de perder datos si la característica no existe en 2003 o no existe en el formato XML 2003. – BrainSlugs83

Respuesta

28

Desde el OpenXML article on wikipedia:

Un archivo XML Open Office es un paquete OPC compatible con ZIP que contiene documentos XML y otros recursos.

En otras palabras, los archivos OpenXML son en realidad archivos zip con archivos XML en ellos. La compresión o el cifrado "codifica" los datos, saboteando la capacidad de la subversión de generar deltas entre revisiones. Esto no está relacionado con el svn:mimetype. Subversion considera que todos los archivos son binarios al generar deltas.

En holandés tenemos un dicho "medir es saber". El siguiente gráfico muestra los resultados de un experimento en el que importé un documento de 500K OpenXML en un repositorio de SVN 1.6 (revisión 1). Luego agregué un párrafo de otro documento, guardado y comprometido. Esto se repitió 5 veces (revisión 2 a 6).

Como se puede ver, la comisión de una nueva revisión docx que sólo añade un párrafo le costará alrededor de 150K de espacio en disco. Esto es mucho más eficiente que simplemente almacenar una copia de cada revisión sin la ayuda de un sistema de control de versiones.

También repetí el experimento con un repositorio de pruebas separado al descomprimir cada revisión del docx. Como puede ver, el almacenamiento de las revisiones de documentos sería mucho más eficiente si no estuviera comprimido. También es interesante ver que la propia compresión de datos de subversion es tan eficiente como zip. Almacenar la primera revisión de un docx descomprimido en subversión ocupa aproximadamente el mismo espacio que el docx original.

YMMV.

+1

Buen experimento! En Word 2007, si elijo Guardar como ... -> Otros formatos, una de las opciones es Documento XML de Word (* .xml). Esta opción guarda el archivo como un documento XML que se puede ver en WordPad. El formato Word XML parece ser diferente que descomprimir el paquete DOCX OPC. ¿Alguien tiene información sobre los pros/contras de usar el formato Word XML? Voy a repetir el experimento de wcoenen con documentos en formato Word XML, solo para estar seguro. – RjOllos

+1

Según mi experiencia en las últimas semanas de trabajo con paquetes OpenXML, la diferencia clave es que .docx puede almacenar datos arbitrarios (leer: OLE) u OpenXML Package (leer: otros .docx y .xlsx) dentro del contenedor. No tendrá esta capacidad solo con WordprocessingML. – technomalogical

+0

@technomalogical Eso no es correcto. El formato de paquete plano Open XML puede almacenar partes binarias perfectamente bien, se serializan como base64. Echa un vistazo por ti mismo. Todo lo que un paquete .docx puede hacer, un OPC también puede hacerlo. Puede ser el formato Word 2003 WordprocessingML en el que está pensando (los dos no son lo mismo). – BrainSlugs83

-2

¿alguna vez ha tratado de abrir un archivo OpenXML en un editor de texto?

para hazlo corto: es no texto, sigue siendo binario. Entonces, no, no puedes hacer que Subversion lo maneje diferente.

+0

Esta respuesta no es muy útil porque no aclara la confusión de RjOllos por qué un documento llamado "XML" debe ser binario ... – chiccodoro

+1

Esto es engañoso: los archivos XML SON texto - el problema es que un archivo .docx es en realidad un archivo zip de los archivos XML (y otras cosas). –

3

Por desgracia, actualmente no puede hacer esto con la subversión, pero no ha habido cierto debate en torno a este:

http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=651443

+0

+1 para el enlace útil. Tenga en cuenta que la discusión explica que se utilizan diferencias binarias, pero indica que los deltas pueden ser bastante grandes. Lo principal que pierde es la capacidad de rastrear fácilmente los cambios entre versiones. –

+0

TortoiseSVN hace diffs en archivos de Word y Excel bastante bien. A partir de Office 2007, las diferencias de PowerPoint ya no son compatibles. – RjOllos

9

Subversion maneja ficheros binarios bastante bien. Sí no almacena una copia completa para cada confirmación, pero solo una diferencia binaria eficiente.

Consulte el FAQ acerca de esto.

+0

Después de leer también la respuesta de wcoenen, me pregunto si los documentos de Office 2003 serían almacenados de forma más eficiente por Subversion. Los datos de Wcoenen muestran que se está realizando un duplicado (o casi un duplicado) del archivo de datos (hipotéticamente debido a la compresión de datos). Como Subversion maneja bastante bien un archivo binario ordinario, estaría interesado en repetir el experimento de wcoenen con documentos de formato de Office 2003, que intentaré hacer. – RjOllos

Cuestiones relacionadas