Version control for DOCX and PDF?
Asked Answered
T

7

42

I've been playing around with git and hg lately and then suddenly it occurred to me that this kind of thing will be great for documents.

I've a document which I edit in DOCX and export as PDF. I tried using both git and hg to version control it and turns out with hg you end up tracking only binary and diff-ing isn't meaningful. Although with git I can meaningfully diff DOCX (haven't tried on PDF yet) I was wondering if there is a better way to do it than I'm doing it right now. (Ideally, not having to leave Word to diff will be the best solution.)

Tadpole answered 21/7, 2010 at 11:6 Comment(0)
S
17

There are two different concepts here - one is "can the version control system make some intelligent judgements about the contents of files?" - so that it can store just delta information between revisions (and do things like assign responsibility to individual parts of a file).

The other is 'do I have a file comparison tool which is useful for the types of files I have in the version control system'. Version control systems tend to come with file comparison tools which are inferior to dedicated alternatives. But they can pretty much always be linked to better diff programs - either for all file types or specific ones.

So it's common to use, for example, Beyond Compare as a general compare tool, with Word as a dedicated Word document comparer.

Different version control systems differ as to how good people perceive them to be at handling 'binaries', but that's often as much to do with handling huge files and providing exclusive locking as it is to do with file comparison.

Suite answered 21/7, 2010 at 11:13 Comment(6)
Yes, I'm aware of the "binary" capability discussions. So what would you suggest - how should one go about recording the history of their DOCXs?Tadpole
I'd put them in any kind of VCS, and configure that VCS to use Word for comparing DOCX files.Suite
How do I configure TortoiseHg to do this automatically when I double click an old version of the DOCX?Tadpole
Ashish - sorry, I don't know, you'll have to look that one up.Suite
What do you mean with "Word as a dedicated Word document comparer"? Isn't Word only a word processor?Transparency
@Transparency Word can compare two Word documents, showing you the differences between them. Whether or not that's part of being 'only a word processor' rather depends on what you consider the features of 'a word processor' to be...Suite
K
9

http://tortoisehg.bitbucket.io/ includes a plugin called docdiff that integrates Word and Excel diff'ing.

Kraal answered 22/9, 2010 at 1:37 Comment(0)
J
6

This article outlines the solution for Docx using Pandoc While this post outlines solution for PDF using pdf2html.

Journal answered 28/1, 2015 at 15:36 Comment(0)
E
5

You can use Beyond Compare as external diff tool for hg. Add to/change your user mercurial.ini as:

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

Then get Beyond Compare file viewer rule for docx.

Now you should be able to compare two versions of docx in Beyond Compare.

Eyecup answered 22/9, 2010 at 1:15 Comment(0)
F
4

Only for docx, I compiled instructions for multiple places here: 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!

It works great on OSX

Firefly answered 4/9, 2013 at 12:44 Comment(0)
D
4

I used SVN (yes, in 2020 :-)) with TortoiseSVN on Windows. It has a built-in function to compare DOCX files (it opens Microsoft Word in a mode where your screen is divided into four parts: the file after the changes, before the changes, with changes highlighted and a list of changes). Screenshot below (sorry for the Polish version of MS Word). I also checked TortoiseGIT and it also has this functionality. I've read that TortoiseHG has it as well.

A screenshot of comparison of changes of a file using Microsoft Word and TortoiseSVN

Discussant answered 2/2, 2020 at 20:32 Comment(0)
P
2

If you happen to use a Mac, I wrote a git merge driver that can use Microsoft Word and tracked changes to merge and show conflicts between any file types Word can read & write.

http://github.com/jasmas/wordMerge

I say 'if you happen to use a Mac' because the driver I wrote uses AppleScript, primarily to accomplish this task.

It'd be nice to add a vbscript version to the project, but at the moment I don't have a Windows environment for testing. Anyone with some basic scripting knowledge should be able to take a look at what I'm doing and duplicate it in vbscript, powershell or whatever on Windows.

Parget answered 10/2, 2014 at 19:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.