¿Control de versiones para DOCX y PDF?


He estado jugando con git y hg últimamente y de repente se me ocurrió que este tipo de cosas será genial para los documentos.

Tengo un documento que edito en DOCX y exporto como PDF. Intenté usar git y hg para controlarlo y resulta que con hg terminas rastreando solo binario y la diferencia no es significativa. Aunque con git puedo diferenciar significativamente DOCX (no he probado en PDF todavía) Me preguntaba si hay una mejor manera de hacerlo de lo que estoy lo estoy haciendo ahora mismo. (Idealmente, no tener que dejar Palabras para diff será la mejor solución.)

-- Ashish Gandhi

Author: Jungle Hunter, 2010-07-21

6 answers

Hay dos conceptos diferentes aquí - uno es "¿puede el sistema de control de versiones hacer algunos juicios inteligentes sobre el contenido de los archivos?"- para que pueda almacenar solo información delta entre revisiones (y hacer cosas como asignar responsabilidad a partes individuales de un archivo).

El otro es 'tengo una herramienta de comparación de archivos que es útil para los tipos de archivos que tengo en el sistema de control de versiones'. Los sistemas de control de versiones tienden a venir con herramientas de comparación de archivos que son inferior a las alternativas dedicadas. Pero casi siempre se pueden vincular a mejores programas de diferencias, ya sea para todos los tipos de archivos o para algunos específicos.

Así que es común usar, por ejemplo, Beyond Compare como una herramienta de comparación general, con Word como un comparador de documentos de Word dedicado.

Los diferentes sistemas de control de versiones difieren en cuanto a cuán buenas personas perciben que son en el manejo de 'binarios', pero eso a menudo tiene tanto que ver con el manejo de archivos enormes y proporcionar bloqueo exclusivo como tiene que ver con la comparación de archivos.

 14
Author: Will Dean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-21 11:13:35

Http://tortoisehg.bitbucket.io/ incluye un plugin llamado docdiff que integra Word y Excel diff ing.

 6
Author: Joshua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 11:21:09

Puede usar Beyond Compare como herramienta de comparación externa para hg. Añadir / cambiar su usuario mercurial.ini as:

[extdiff]
cmd.vdiff = c:/path/to/BCompare.exe

Luego obtenga Beyond Compare file viewer rule para docx.

Ahora debería poder comparar dos versiones de docx en Beyond Compare.

 4
Author: Geoffrey Zheng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-22 01:15:49

Este artículo describe la solución para Docx usando Pandoc Mientras que este post describe la solución para PDF usando pdf2html.

 4
Author: Daniil Shevelev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-28 17:43:11

Solo para docx, compilé instrucciones para múltiples lugares aquí: https://gist.github.com/nachocab/6429893

# download docx2txt by Sandeep Kumar
wget -O docx2txt.pl http://www.cs.indiana.edu/~kinzler/home/binp/docx2txt

# make a wrapper 
echo '#!/bin/bash
docx2txt.pl $1 -' > docx2txt
chmod +x docx2txt

# make sure docx2txt.pl and docx2txt are your current PATH. Here's a guide
http://shapeshed.com/using_custom_shell_scripts_on_osx_or_linux/
mv docx2txt docx2txt.pl ~/bin/

# set .gitattributes (unfortunately I don't this can't be set by default, you have to create it for every project)
echo "*.docx diff=word" > .git/info/attributes

# add the following to ~/.gitconfig
[diff "word"]
    binary = true
    textconv = docx2txt

# add a new alias
[alias]
    wdiff = diff --color-words

# try it
git init

# create my_file.docx, add some content

git add my_file.docx

git commit -m "Initial commit"

# change something in my_file.docx

git wdiff my_file.docx

# awesome!

Funciona muy bien en OSX

 3
Author: nachocab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-26 17:09:31

Si utilizas un Mac, escribí un controlador git merge que puede usar Microsoft Word y rastreé los cambios para fusionar y mostrar conflictos entre cualquier tipo de archivo que Word puede leer y escribir.

Http://github.com/jasmas/wordMerge

Digo 'si se utiliza un Mac' porque el controlador que escribí utiliza AppleScript, principalmente para llevar a cabo esta tarea.

Sería bueno agregar una versión vbscript al proyecto, pero por el momento no tengo un entorno Windows para probar. Cualquier persona con algún conocimiento básico de scripting debería poder echar un vistazo a lo que estoy haciendo y duplicarlo en vbscript, powershell o lo que sea en Windows.

 2
Author: user3294264,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-10 19:08:35