Плагин Git (или Hg) для работы с файлами Microsoft Word и / или OpenOffice - PullRequest
40 голосов
/ 20 июля 2010

Кто-нибудь сталкивался с плагином Git или Hg для "значимых" различий / слияния / ветвления файлов Word OpenOffice или Microsoft.

Я знаю, что могу 'проверять' файлы .doc, но и Git, и Hg рассматривают их как двоичные двоичные объекты. Я хотел бы иметь возможность выполнять все (или, по крайней мере, многие) из обычных операций на основе ревизии над текстом файла.

И да, я знаю, что мне следует использовать латекс или конвертировать файлы туда-сюда между RTF. Я просто ищу более «нативное» решение, поскольку пытаюсь управлять сотрудничеством между технарями и «управленцами».

Это связано с моим вопросом о Biostar здесь: http://biostar.stackexchange.com/questions/1749/writing-collaboration-with-source-control-and-microsoft-word

Спасибо.

Ответы [ 8 ]

9 голосов
/ 11 сентября 2012

Мне удалось придумать хороший трюк, который также работает с файлами Open Office, PPT и т. Д.:

http://xcafebabe.blogspot.hu/2012/09/sexy-comparison-of-word-documents-with.html

Вот скриншот, который демонстрирует результат:

enter image description here

9 голосов
/ 04 декабря 2010

Как насчет:

  1. Сохраните документы Word в XML.
  2. Зафиксируйте файлы XML Word.
  3. Различайтесь с помощью внешнего инструмента сравнения XML,Например:

    $ git difftool -t xmldiff c3d293 498571

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

Список литературы:

8 голосов
/ 07 сентября 2012

Если вы работаете в MS Windows, используйте TortoiseGit .Мне просто пришлось пережить этот болезненный опыт, и TGit, хотя неэгоистичный, снимает с него часть боли.Несколько других моментов:

  • Удивительно, но git diff и gitk неплохо справляются, по крайней мере, с визуализацией diffs между .docx (не уверен насчет .doc, но я бы хотелПредположим, это то же самое).Это хорошо для простого сканирования различий при выполнении коммитов.
  • Вам совершенно не повезло в том, что касается ускоренной перемотки вперед и автоматического объединения.К сожалению, я не нашел инструмента, который мог бы справиться с этим (хотя мне нравится идея xml выше), поэтому вам придется делать все слияния вручную.
  • Microsoft Word (MS Word) имеет достойное,если есть недостатки, объединить инструмент.AFAIK, он может выполнять только 2-сторонние слияния ( т.е.: X0 + dX = X1), но не 3-сторонние или 2-родительские слияния, которые более распространены в управлении версиями (, т. Е.: X0 + dX1 + dX2 = X1).Вы могли бы разрешать конфликты слияния с помощью этого инструмента, но было бы немного трудоемко - проверить каждую ветку, экспортировать HEAD как неотслеживаемую версию и т. Д.

    X0 = *.BASE.docx,
    X0 + dX1 = *.LOCAL.docx and
    X0 + dX2 = *.REMOTE.docx
    
  • К счастью, это именно то, что делают TGit (и TSVN тоже).К сожалению, я бы избегал rebase, поскольку, если вам нужно воспроизвести несколько изменений подряд, это может быть очень утомительно, но merge для коротких документов - это хорошо, но не очень.

3 голосов
/ 28 февраля 2013

Отвечая на вопрос JudoWill - Workshare, вероятно, является ведущим инструментом, используемым юристами.

2 голосов
/ 04 сентября 2013

Я собрал инструкции для нескольких мест здесь: http://bit.ly/17LaxVY

# 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 ci -m "Initial commit"

# change something in my_file.docx

git wdiff my_file.docx

# awesome!

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

1 голос
/ 07 июня 2015

Git 1.6.1 или более поздняя версия теперь поставляется с функциями textconv , которые позволяют использовать произвольную команду для преобразования файла в текст перед диффузией.

проверьте это также: https://gist.github.com/17twenty/4985374

1 голос
/ 21 июля 2010

Используя svn (не git или hg, но вы могли бы иметь шлюз), есть расширение для Ooo, работающее с несжатыми XML-файлами, см. мой ответ о похожем вопросе. Кстати, если когда-либо вы посмотрите на код плагина и сделаете его hg-осведомленный вместо svn, пожалуйста, дайте мне знать! ; -)

1 голос
/ 21 июля 2010

Юридические фирмы имеют чрезвычайно надежные системы для этого.Те, которые не доверяют истории изменений в документе (потому что он извлекается из внешних источников), а вместо этого проводят свои собственные сравнения и могут предоставить дельты.Если это то, что им действительно нужно, вам лучше купить это, чем помещать обертку в git или mercurial, которая никогда не будет для них полезной.используйте (ворча) более дорогой коммерческий инструмент, чем то, что сотрудники офиса будут использовать git или mercurial для любого уровня удовлетворения.

...