programa perder para online linea gratis grandes full formato espaƱol editable descargar convertir convertidor como archivos version-control mercurial zip openoffice.org docx

version control - perder - Control de versiones de archivos comprimidos(docx, odt)



descargar programa para convertir pdf a word (4)

Hay formatos que en realidad son archivos zip disfrazados, por ejemplo, docx o odt. Si los almaceno directamente en el control de versiones, se manejan como archivos binarios. Mi solución ideal sería

  • tenga un foo.docx/ que cree un directorio foo.docx/ para cada archivo foo.docx antes de confirmar, descomprimiendo todos los archivos en él
  • opcionalmente, tener un gancho que reindenta los archivos xml
  • tener un gancho que recrea foo.docx de los archivos almacenados después de la actualización

No quiero que los archivos docx sean controlados por versión. (Estoy al tanto de una pregunta relacionada donde se sugirió un enfoque diferente con una diferencia personalizada).

¿Es esto factible? ¿Es esto factible con mercurial?

ACTUALIZAR:

Sé de ganchos. Estoy interesado en los detalles. Aquí hay una sesión para demostrar el comportamiento esperado.

> hg add foo.docx > hg status A foo.docx > hg commit > # Change foo.docx with external editor > hg status M foo.docx > hg diff +++ foo.docx/word/document.xml - <w:t>An idea</w:t> + <w:t>A much better idea</w:t>


He estado luchando con este problema exacto durante los últimos días y he escrito una pequeña utilidad .NET para extraer y normalizar los archivos de Excel de tal manera que sean mucho más fáciles de almacenar en el control de código fuente. He publicado el ejecutable aquí:

https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe

..y la fuente aquí:

https://bitbucket.org/htilabs/ooxmlunpack

Si hay algún interés, me complace poder hacer esto más configurable, pero en este momento, debe poner el ejecutable en una carpeta (por ejemplo, la raíz de su repositorio de origen) y cuando lo ejecute, lo hará:

  • Analice la carpeta y sus subcarpetas en busca de archivos .xlsx y .xlsm
  • Tome una copia del archivo como * .orig
  • Descomprima cada archivo y vuelva a comprimirlo sin compresión.
  • Imprima en su totalidad cualquier archivo en el archivo que sea XML válido
  • Elimine el archivo calcchain.xml del archivo (ya que cambia mucho y no afecta el contenido del archivo)
  • Incluya en línea cualquier valor de texto sin formato (de lo contrario, estos se guardan en una tabla de búsqueda que provoca grandes cambios en el XML interno si se modifica una sola celda)
  • Elimine los valores de cualquier celda que contenga fórmulas (ya que solo se pueden calcular la próxima vez que se abra la hoja)
  • Cree una subcarpeta * .extracted, que contenga el contenido del archivo zip extraído

Claramente, no todas estas cosas son necesarias, pero el resultado final es un archivo de hoja de cálculo que aún se abrirá en Excel pero que es mucho más susceptible a la compresión incremental y difusa. Además, el almacenamiento de los archivos extraídos también hace que sea mucho más obvio en el historial de versiones qué cambios se han aplicado en cada versión.

Si hay algo de apetito por ahí, estoy feliz de hacer que la herramienta sea más configurable ya que creo que no todos querrán que se extraigan los contenidos, o posiblemente los valores eliminados de las celdas de fórmula, pero estos son muy útiles para mí en este momento.

En las pruebas, una hoja de cálculo de 2MB se ''desempaqueta'' a 21MB, pero luego pude almacenar cinco versiones con pequeños cambios entre cada uno, en un archivo de datos mercuriales de 1.9MB, y visualizar las diferencias entre las versiones usando el Comparador en el modo de texto.


Me preguntaba lo mismo, y acabo de encontrar la extensión / filtro ZipDoc para Mercurial, ¡lo que parece hacer exactamente esto!

Todavía no lo he intentado, ¡pero parece prometedor!


Puede usar un enlace de confirmación previa para descomprimir y un enlace de actualización para comprimir. Vea la guía definitiva sobre cómo usar los ganchos.

Tenga cuidado con el cambio de nombre. Si cambia el nombre de foo.docx a bar.docx , su foo.docx bar.docx deberá eliminar foo.docx/ y agregar bar.docx/ .

ACTUALIZACIÓN (perdón por dar una respuesta de nivel de entrada a un usuario de 1k-rep)

Si desea utilizar docx desempaquetado para operaciones hg centrales como diff (el status puede funcionar con un archivo empaquetado), tendría que ir con una extensión. Creo que puede adoptar un enfoque similar a la extensión de keyword para envolver el objeto repo con el suyo.

He escrito algunas extensiones pero no en ese nivel de núcleo duro, por lo que no puedo proporcionar más detalles.

Si desea volverse loco, incluso podría fusionarse con un archivo desempaquetado. Pero probablemente sea más seguro tratarlo como binario y usar una herramienta externa para diferenciar y fusionar.


Si puede superar el obstáculo de descomprimir y comprimir con éxito los documentos de Openoffice, debería poder utilizar el sistema de filtro que tenemos en Mercurial. Eso le permite transformar archivos en cada lectura / escritura desde / al repositorio.

Desafortunadamente, tendrá que hacer más que descomprimir el archivo foo.docx. El problema es que necesita generar un solo archivo como salida, por lo que quizás pueda unzip foo.docx y luego crear los archivos generados. Luego, será la versión del tarball, que debería funcionar ya que un tarball es solo una concatenación sin comprimir de todos los archivos individuales con algo de información meta. Ahora que lo pienso, una solución más simple sería volver a comprimir el archivo foo.docx sin empaquetar, pero no especificar compresión. Eso debería dar resultados similares a los del uso de alquitrán.

Resolver este problema es algo que quería hacer yo mismo, por lo que le rogamos que nos envíe un correo electrónico a la lista de correo de Mercurial .