-
Notifications
You must be signed in to change notification settings - Fork 74
Integrate git diffs with word docx files
This section was inspired by Martin Fenner's "Using Microsoft Word with git".
To configure git diff:
-
Tell git how to handle diffs of .docx files.
-
Create or edit file ~/.gitconfig (linux, Mac) or "c:\Documents and Settings\user.gitconfig" (Windows) to add
[diff "pandoc"] textconv=pandoc --to=markdown prompt = false [alias] wdiff = diff --word-diff=color --unified=1
-
In your paper directory, create or edit file .gitattributes (linux, Windows and Mac) to add
*.docx diff=pandoc
-
You can commit .gitattributes so that it stays with your paper for use in other computers, but you'll need to edit ~/.gitconfig in every new computer you want to use.
-
Now you can see a pretty coloured diff with the changes you have made to your .docx file since the last commit
git wdiff file.docx
To see all changes over time
git log -p --word-diff=color file.docx
This is only going to work from linux/Mac or Windows running git from a bash shell.
-
Install pandoc. Pandoc is a program to convert between different file formats. It's going to allow us to convert Word files (.docx) to Markdown (.md).
-
Set up git hooks to enable automatic generation and tracking of Markdown copies of .docx files.
Copy these hook files to your git project's
.git/hooks
directory and rename them, or soft-link to them withln -s
, and make them executable (chmod u+x *.sh
):- pre-commit-git-diff-docx.sh -> .git/hooks/pre-commit
- post-commit-git-diff-docx.sh -> .git/hooks/post-commit
Now every time you run
git commit
, the pre-commit hook will automatically run before you see the window to enter the log message. The hook is a script that makes a copy in Markdown format (.md) of every .docx file you are committing. The post-commit hook then amends the commit adding the .md files.
This works in linux, Mac and Windows.
-
Edit your Word document as needed.
-
Run pandoc from the linux or Windows command line. This will create a Markdown version of your file (without Figures, but with equations in latex format)
pandoc -s file.docx -t markdown -o file.md
-
Update the ChangeLog
-
Commit both files with git
git add file.docx file.md git commit