Подтвердить что ты не робот

Git (или Hg) для работы с файлами Microsoft Word и/или OpenOffice

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

Как насчет:

  • Сохраните документы Word в XML.
  • Зафиксируйте файлы XML Word.
  • Diff, используя внешний инструмент XML diff. Например:

    $ git difftool -t xmldiff c3d293 498571

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

Литература:

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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