Formato de hoja de cálculo amigable con Git? [cerrado]

35

Estamos tratando de mover nuestro proceso de documentación del proyecto de Documentos de Google a un conjunto de repositorios Git autohospedados.

Los documentos de texto son lo suficientemente amigables con Git, ya que generalmente no necesitamos ningún formato sofisticado, simplemente convertiremos todo a, por ejemplo, multimarkdown con una opción para incrustar LaTeX para casos complejos.

Pero las hojas de cálculo son una historia bastante diferente ... ¿Existe un formato de hoja de cálculo (similar) que sea amigable con los sistemas de control de versiones (y, preferiblemente, es tan legible como Markdown)?

"Formato amigable": Git funciona bien con el formato ( no lo hace con XML) y genera diferencias legibles por humanos ( la configuración adicional que involucra herramientas externas está bien).

Obviamente, los sabores de Markdown permiten crear tablas estáticas, pero me gustaría poder usar cosas como SUM()etc. (tenga en cuenta que CSV tiene el mismo problema). bonito.

Actualización: solo respuestas compatibles con Linux, por favor. No hay cosas de MS Office.

Alexander Gladysh
fuente
2
¿Qué quieres decir exactamente con "git-friendly"? No he usado mucho git, pero maneja bien los archivos binarios y se pueden versionar y etiquetar como cualquier archivo de texto. Simplemente no se pueden diferenciar, pero eso puede no ser necesario.
Thomas Owens
Amistoso: puedo ver diff y descubrir fácilmente qué fue cambiado. Se actualizó la pregunta para reflejar eso. Por cierto, AFAIR, git, cuando está configurado correctamente, puede mostrar diferencias para algunos formatos binarios (con la ayuda de herramientas externas, por supuesto).
Alexander Gladysh
No puedo creer que nadie te haya preguntado esto, pero ¿por qué necesitas almacenar hojas de cálculo en el repositorio del proyecto? ¿Para qué son las hojas de cálculo? Por lo general, son lo suficientemente complejos como para que los necesite en una ubicación diferente y generalmente los usan los empresarios ...
Rudolf Olah
2
Esta pregunta parece estar fuera de tema porque no está relacionada con la programación.
Una alternativa para tratar de encontrar o crear un formato completamente nuevo adecuado para las diferencias regulares, es encontrar o crear una herramienta para diferenciar las hojas de cálculo regulares y producir resultados de texto. Eso es lo que hace el software ExcelCompare de código abierto, para Excel, OpenDocument, etc. Y esa forma de ver la pregunta es incluso adecuada para un sitio de preguntas y respuestas sobre desarrollo de software :) Ver control de versiones: ¿cómo difiero dos hojas de cálculo? - Stack Overflow y el software en sí está en na-ka-na / ExcelCompare
nealmcb

Respuestas:

12

También puede usar libreOffice / open-office-spreadsheet-non-zip-xml-fileformat "* .fods", que es xml simple. El comentario de @glenatron también se aplica a este formato.

El formato de hoja de cálculo de oficina abierta estándar "* .ods" está comprimido en xml y no es tan adecuado para git (similar a la respuesta @ Egryan / @ emuddudley).

k3b
fuente
Me gustaría evitar XML. Se actualizó la pregunta para reflejar eso.
Alexander Gladysh
2
1. LibreOffice funciona en Linux, de hecho. 2. No, XML no es una mierda de MS . Sin embargo, XML y Git no funcionan bien juntos (ver el comentario de @ glenatron arriba).
Alexander Gladysh
3
@LazyBadger: DiffDog: sin soporte de Linux, de código cerrado, 500 $ / usuario. Lo siento, pero pasaré.
Alexander Gladysh
2
@AlexanderGladysh - Meld, xmldiff o ¿Cómo puedo diferenciar dos archivos XML? topic on SU
Lazy Badger
1
@LazyBadger: Tenga en cuenta que la combinación de 3 vías es más importante que la diferencia. (Pero Google encuentra varias herramientas de fusión de 3 vías de línea de comandos de Linux adecuadas para XML). Probaré estas contra las hojas de cálculo de LibreOffice, gracias.
Alexander Gladysh
7

Esto puede no ajustarse a sus necesidades, pero puede adaptarse a las de otros. El modo Org para Emacs incluye table.el, lo que, junto con las mejoras particulares del modo Org, proporciona una solución extremadamente robusta para hojas de cálculo, todo en texto plano. Hay más información (mucho más que el alcance de este sitio) disponible en el sitio web y el manual de Org-mode , particularmente en su hoja de cálculo .

ingrese la descripción de la imagen aquí

Sean Allred
fuente
4

¿Qué pasa con pyspread ? Es potente y viene con una buena GUI.

De acuerdo con la página de Primeros Pasos :

El formato del archivo pys ha cambiado en la versión 0.2.0. Ahora es un archivo de texto bzip2-ed con la siguiente estructura:

[Pyspread guardar la versión del archivo]

0.1

[forma]

1000 100 3

[cuadrícula]

7 22 0 'Código de prueba1'

8 9 0 'Código de prueba2'

[atributos]

[] [] [] [] [(0, 0)] 0 'textfont' u'URW Chancery L '

[] [] [] [] [(0, 0)] 0 'tamaño de punto' 20

[row_heights]

0 0 56.0

7 0 25.0

[col_widths]

0 0 80.0

[macros]

Texto macro

El hecho de que sea bzip2-ed no ayuda, pero al menos puedes acceder a un texto bastante legible.

La licencia es GPLv3.

Clemente J.
fuente
4

CSV (valores separados por comas)

Si solo está trabajando con datos, es probable que sea el formato más simple y más compatible.

Debería hacerte la vida más fácil si quieres diferenciar entre versiones.

Ah, y Google Docs es totalmente compatible con la importación / exportación CSV.

Actualizar:

Luego, simplemente escriba una secuencia de comandos de Google Apps para clasificar las fórmulas en la exportación y hacer lo contrario en la importación. Necesitarás usar algo de ingenio porque el formato que estás buscando no existe.

Evan Plaice
fuente
2
Desafortunadamente, CSV no admite cosas de fórmulas como SUM()etc.
Alexander Gladysh
Actualicé la pregunta para decir eso explícitamente.
Alexander Gladysh
1
@AlexanderGladysh, en realidad diría que CSV puede manejar ecuaciones muy bien si elige el formato correcto, el problema es que necesitaría configurar un lector para que analice y evalúe esas ecuaciones.
zzzzBov
Emacs csv-mode podría ser una buena herramienta. También considero Gnumerics para la edición ligera de csv. Todavía tengo que probar estos ampliamente.
Brady Trainor
1

Sé que Microsoft Office 2007 y versiones posteriores tienen un formato xml propiciatorio cuando se guardan. Entonces eso debería ser amigable para Git. Open Office también se guarda en formato xml si desea utilizar una solución de código abierto más. Dado que un XML es un formato de texto, git debería poder manejarlo bastante bien

Como lo está moviendo desde Google Documents, puede descargarlos y tiene documentos abiertos que están basados ​​en xml.

Editar

Dado que desea una solución que no sea Microsoft / XML, siempre puede guardar un CSV en una oficina abierta, aunque no estoy seguro de cuánta funcionalidad pierde al guardar en este formato.

Egryan
fuente
3
He visto algunos problemas con Git en desacuerdo con los formatos XML o fusionándolos de formas que no cumplen con el formato del documento. Creo que esto se puede solucionar mediante el uso de una herramienta de combinación específica de XML, pero no he visto esto en uso.
glenatron
44
El formato Excel Workbook (* .xlsx) es una colección de archivos XML en un contenedor ZIP. Puede elegir XML Spreadsheet 2003 (* .xml) para guardar en un solo archivo XML, pero solo admite un subconjunto de características de Excel.
M. Dudley
1
XML no funcionaría, según el comentario de @glenatron anterior (yo también tuve tales problemas). Además: las diferencias de XML no son IMO legibles para humanos. Se actualizó la pregunta para reflejar eso.
Alexander Gladysh
Bueno, CSV no admite ninguna fórmula. Entonces puedo usar las tablas de Markdown. Se actualizó la pregunta para reflejar eso.
Alexander Gladysh
0

Esto podría no ser exactamente lo que quiere Creo que libre office le permite hacer referencia a un archivo externo. Podría tener una hoja de cálculo que trate como una base de datos y tener un archivo libre estático que sería su interfaz. Perdería el acceso fácil sumando en sus archivos versionados a menos que los devuelva la llamada, pero funcionaría.

Otro problema bastante grande con esto sería que es unidireccional.

Jpatrick
fuente