web-dev-qa-db-ja.com

Microsoft Wordおよび/またはOpenOfficeファイルを処理するためのGit(またはHg)プラグイン

OpenOfficeまたはMicrosoft Wordファイルの「意味のある」差分/マージ/分岐のためのGitまたはHgプラグインを見つけた人はいますか?.

.docファイルを「チェックイン」できることはわかっていますが、GitとHgはどちらもバイナリBLOBとして扱います。ファイルのテキストに対して通常のリビジョンベースの操作のすべて(または少なくとも多く)を実行できるようにしたいと考えています。

そして、はい、私はラテックスを使用するか、RTF間でファイルをやり取りする必要があることを知っています。私は技術者と「管理者」の間のコラボレーションを管理しようとしているので、より「ネイティブな」ソリューションを探しています。

これは、Biostarに関する私の質問に関連しています: http://biostar.stackexchange.com/questions/1749/writing-collaboration-with-source-control-and-Microsoft-Word

ありがとう。

40
JudoWill

どうですか:

  1. WordドキュメントをXMLで保存します。
  2. XML Wordファイルをコミットします。
  3. 外部XML比較ツールを使用して比較します。例えば:

    $ git difftool -t xmldiff c3d293 498571

1行に1つの要素を含むようにXMLファイルを変換すると、チェックインプロセスが効率的に実行され、外部XML差分ツールがすばやく処理できるようになります。

参照:

9
aparkerlue

私が思いついた素晴らしいトリックは、Open OfficeファイルやPPTなどでも機能します。

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

結果を示すスクリーンショットは次のとおりです。

enter image description here

9
rlegendi

MS Windowsを使用している場合は、 TortoiseGit を使用します。私はこの苦痛な経験とTGitを経験しなければなりませんでした。その他のポイント:

  • 驚くべきことに、git diffとgitkはどちらも、.docx間の少なくともvisualizingdiffのかなり良い仕事をします(.docについてはわかりませんが、それは同じ)。これは、コミット時に差分をすばやくスキャンするのに適しています。
  • 早送りと自動マージに関する限り、あなたは完全に不運です。残念ながら、これを処理できるツールは見つかりませんでした(上記のxmlのアイデアは気に入っています)。そのため、すべてのマージを手動で行う必要があります。
  • Microsoft Word(MS Word)には、欠陥がある場合でもまともなマージツールがあります。私の知る限り、それは双方向のマージのみを行うことができます(i.e.:X0 + dX = X1)、3-wayまたは2-parentマージではなく、バージョン管理でより一般的です(i.e.:X0 + dX1 + dX2 = X1)。あなたはこのツールを使用してマージの競合を解決できますが、いくつかのレッグワークの権利があります-各ブランチをチェックアウトし、HEAD =追跡されていないバージョンなど.

    X0 = *.BASE.docx,
    X0 + dX1 = *.LOCAL.docx and
    X0 + dX2 = *.REMOTE.docx
    
  • 幸いなことに、これはTGit(およびTSVN)が行うこととまったく同じです。残念ながら、rebaseは避けてください。複数の変更を続けて再生する必要がある場合、大変な作業になる可能性がありますが、短いドキュメントの場合はmergeで十分です。

8
Mark Mikofski

JudoWillの質問への回答-Workshareはおそらく弁護士が使用する主要なツールです。

3
Robert Cowham

ここに複数の場所の指示をまとめました: 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でうまく動作します

2
nachocab

法律事務所には、これを行うための非常に堅牢なシステムがあります。ドキュメントの改訂履歴を信頼せず(外部から提供されているため)、代わりに独自の比較を行い、デルタを提供できます。それが本当に必要なものである場合は、ラッパーをgitまたはMercurialに入れるよりも購入する方がよいでしょう。

悲観論者のように聞こえて申し訳ありませんが、技術者は、オフィスの人々がgitまたはMercurialをあらゆるレベルの満足度で使用するよりも、高額な商用ツールを(不平ながら)使用する可能性が高くなります。

1
Ry4an Brase

Git 1.6.1以降に textconv 機能が追加され、比較前に任意のコマンドを使用してファイルをテキストに変換できるようになりました。

これも確認してください: https://Gist.github.com/17twenty/4985374

1
Marwen Trabelsi

Svn(gitまたはhgではなく、ゲートウェイを使用できます)を使用すると、Oooが非圧縮XMLファイルを処理するための拡張機能があります。同様の質問については my answer を参照してください。ところで、もしeverあなたがプラグインコードを見てそれをhg-awaresvnの代わりに、教えてください! ;-)

1