Estoy a cargo de varios archivos de Excel y archivos de esquema SQL. ¿Cómo debo realizar un mejor control de la versión del documento en estos archivos?
Necesito saber la parte modificada (parte diferente) en estos archivos y mantener todas las versiones como referencia. Actualmente estoy agregando la marca de tiempo en el nombre del archivo, pero encontré que parecía ineficiente.
¿Existe una forma o una buena práctica para mejorar el control de la versión de los documentos?
Por cierto, los editores me envían los archivos por correo electrónico.
git
version-control
ms-office
versioning
Marcus Thornton
fuente
fuente
Respuestas:
Dado que ha etiquetado su pregunta con git Supongo que está preguntando sobre el uso de Git para esto.
Bueno, los volcados de SQL son archivos de texto normales, por lo que tiene mucho sentido rastrearlos con Git. Simplemente cree un repositorio y guárdelos en él. Cuando obtenga una nueva versión de un archivo, simplemente sobrescríbalo y confirme, Git lo resolverá todo por usted y podrá ver las fechas de modificación, verificar versiones específicas de este archivo y comparar diferentes versiones.
Lo mismo es cierto para
.xlsx
si los descomprime..xlsx
Los archivos son directorios comprimidos de archivos XML (consulte ¿Cómo ensamblar correctamente un archivo xlsx válido a partir de sus subcomponentes internos? ). Git los verá como binarios a menos que los descomprima. Es posible descomprimir.xlsx
y rastrear los cambios en los archivos XML individuales dentro del archivo.También puede hacer esto con
.xls
archivos, pero el problema aquí es que el.xls
formato es binario, por lo que no puede obtener diferencias significativas de él. Pero aún podrá ver el historial de modificaciones y verificar versiones específicas.fuente
.xlsx
es XML, por lo que debería funcionar bien. En general, no hay forma de comparar fácilmente dos.xls
archivos. Probablemente podría agregar un gancho de confirmación previa que pondrá un.csv
cerca y podrá diferenciarlos.La respuesta que he escrito aquí se puede aplicar en este caso. Una herramienta llamada xls2txt puede proporcionar resultados legibles por humanos a partir de archivos .xls. Entonces, en resumen, debe poner esto en su archivo .gitattributes:
Y en el .git / config:
Por supuesto, estoy seguro de que también puede encontrar herramientas similares para otros tipos de archivos, lo que la convierte en
git diff
una herramienta muy útil para documentos de oficina. Esto es lo que tengo actualmente en mi .gitconfig global:El libro Pro Git tiene un buen capítulo sobre el tema: 8.2 Personalización de Git - Atributos de Git
fuente
He estado luchando con este problema exacto durante los últimos días y he escrito una pequeña utilidad .NET para extraer y normalizar 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 hacer esto más configurable, pero en este momento, debe colocar el ejecutable en una carpeta (por ejemplo, la raíz de su repositorio de origen) y cuando lo ejecute, hará lo siguiente:
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 adecuado para la compresión diferencial e incremental. Además, almacenar 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, me complace hacer que la herramienta sea más configurable, ya que supongo que no todos querrán que se extraiga el contenido, o posiblemente se eliminen los valores de las celdas de fórmula, pero ambos son muy útiles para mí en este momento.
En las pruebas, una hoja de cálculo de 2 MB se 'descomprime' a 21 MB, pero luego pude almacenar cinco versiones de la misma con pequeños cambios entre cada una, en un archivo de datos Mercurial de 1,9 MB, y visualizar las diferencias entre las versiones de manera efectiva usando Beyond Compare en modo texto.
NB: aunque estoy usando Mercurial, leí esta pregunta mientras investigaba mi solución y no hay nada específico de Mercurial sobre la solución, debería funcionar bien para Git o cualquier otro VCS.
fuente
Tante recomendó un enfoque muy simple en la gestión de formatos de archivo basados en ZIP en Git :
fuente
Utilice la extensión de documento abierto
.fods
. Es un formato de marcado XML simple y sin comprimir que tanto Excel como LibreOffice pueden abrir, y las diferencias se verán bien.fuente
Hemos creado una extensión de línea de comandos de Git de código abierto para libros de Excel: https://www.xltrail.com/git-xltrail .
En pocas palabras, la característica principal es que
git diff
funciona en cualquier formato de archivo de libro de trabajo para que muestre la diferencia en el contenido de VBA del libro de trabajo (en algún momento, haremos que esto funcione también para el contenido de las hojas de trabajo).Todavía es temprano, pero podría ayudar.
fuente
Como se menciona en el comentario de otra respuesta, los archivos .xlsx son solo XML.
Para llegar al directorio XML (que es
git
-able), debe "descomprimir" el archivo .xlsx en un directorio. Una forma rápida de ver esto en Windows es cambiar el nombre del archivo <nombre de archivo> .xlsx a <nombre de archivo> .zip, y verá el contenido interno. Guardaría esto junto con el binario para que cuando realice el pago, no tenga que realizar otros pasos para abrir el documento en Excel.fuente
Esta utilidad de Excel funciona muy bien para mí:
Control de versiones para Excel
Es una herramienta de control de versiones bastante sencilla para libros de trabajo y macros VBA. Una vez que confirma una versión, se guarda en un repositorio de Git en su PC. Nunca lo intenté re. Archivos de esquema SQL, pero estoy seguro de que hay una forma de evitarlo.
fuente
xltrail
es mucho más fácil que eso.Mi enfoque con los archivos de Excel es similar al de Jon, pero en lugar de trabajar con los datos de texto sin procesar de Excel, exporto a formatos más amigables.
Aquí está la herramienta que uso: https://github.com/stenci/ExcelToGit/tree/master
Todo lo que necesita es descargar el archivo .xlsm (haga clic en el enlace Ver sin procesar en esta página ). No olvide verificar la configuración de Excel como se describe en el archivo Léame. También puede agregar el código para exportar datos SQL a archivos de texto.
El libro de trabajo es tanto un convertidor de Excel binario a archivos de texto como un lanzador de las herramientas Git de Windows, y también se puede usar con proyectos que no están relacionados con Excel.
Mi versión de trabajo está configurada con docenas de libros de Excel. También utilizo el archivo para abrir Git-gui para proyectos que no son de Excel, simplemente agregando la carpeta git a mano.
fuente