Контроль версий для DOCX и PDF?

Я играл с git и hg в последнее время, а затем внезапно мне пришло в голову, что это будет здорово для документов.

у меня есть документ, который я редактирую в DOCX и экспортирую как PDF. Я попытался использовать оба git и hg для управления версиями и получается с hg вы в конечном итоге отслеживаете только двоичный файл, а diff - ing не имеет смысла. Хотя с git Я могу многозначительно diff DOCX (еще не пробовал PDF) мне было интересно, есть ли лучший способ сделать это, чем я делаю это сейчас. (В идеале, не нужно оставлять слово diff будет лучшим решением.)

-- Ашиш Ганди

6 ответов


здесь есть две разные концепции-одна из них: "может ли система управления версиями сделать некоторые интеллектуальные суждения о содержании файлов?"- чтобы он мог хранить только Дельта-информацию между ревизиями (и делать такие вещи, как назначение ответственности отдельным частям файла).

другой -" есть ли у меня инструмент сравнения файлов, который полезен для типов файлов, которые у меня есть в системе управления версиями". Системы контроля версий, как правило, поставляются с инструментами сравнения файлов которые уступают специализированным альтернативам. Но они всегда могут быть связаны с лучшими программами diff - либо для всех типов файлов, либо для конкретных.

поэтому обычно используется, например, Beyond Compare в качестве общего инструмента сравнения, а Word-как выделенный Word document comparer.

различные системы управления версиями отличаются тем, как хорошие люди воспринимают их при обработке "двоичных файлов", но это часто так же связано с обработкой огромных файлов и предоставлением эксклюзивная блокировка, как и при сравнении файлов.


http://tortoisehg.bitbucket.io/ включает плагин под названием docdiff, который объединяет Word и Excel diff'ING.


вы можете использовать Beyond Compare в качестве внешнего инструмента diff для hg. Добавьте / измените пользователя mercurial.ini as:

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

тогда выходите за рамки сравнения правило просмотра файлов для docx.

теперь вы сможете сравнить две версии docx в Beyond Compare.


этой статьи описывает решение для Docx с помощью Pandoc В то время как этот пост описывает решение для PDF с помощью pdf2html.


только для docx, я скомпилировал инструкции для нескольких мест здесь: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  -' > 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!

Он отлично работает на OSX


Если вы используете Mac, я написал драйвер слияния git, который может использовать Microsoft Word и отслеживал изменения для слияния и отображения конфликтов между любыми типами файлов, которые Word может читать и писать.

http://github.com/jasmas/wordMerge

Я говорю "если вы используете Mac", потому что драйвер, который я написал, использует AppleScript, в первую очередь для выполнения этой задачи.

было бы неплохо добавить версию vbscript в проект, но на данный момент у меня нет Среде Windows для тестирования. Любой человек с некоторыми базовыми знаниями сценариев должен иметь возможность взглянуть на то, что я делаю, и дублировать его в vbscript, powershell или любом другом в Windows.