2019/04/01 xlsxの差分表示も追記しました



git diffで、
Word, PowerPoint, Excelのテキスト差分を確認できるようにするための設定手順をまとめました。
macos用の手順です。

方法は以下のブログ記事で書かれている内容と同じですが、
dotfilesで管理することを想定し、ユーザ単位に設定しています。

MS Wordで書かれた原稿をテキストファイルでGit管理する | Fuzoku実践入門ブログ
http://learning-fuzoku.hatenablog.com/entry/2015/03/10/183954

必要なツールのインストール

docxファイルからテキストを出力するため、docx2txtをインストール。

brew install docx2txt

pptxファイルからテキストを出力するため、pptx2txtをインストール。

mkdir -p ~/bin
curl -L https://raw.githubusercontent.com/welcheb/pptx2txt.sh/master/pptx2txt.sh > ~/bin/pptx2txt
chmod +x ~/bin/pptx2txt

xlsxファイルのテキスト出力するため、git-xlsx-textconvをインストール。

brew install cpanm
cpanm Spreadsheet::XLSX
curl -L https://raw.githubusercontent.com/yappo/p5-git-xlsx-textconv.pl/master/git-xlsx-textconv.pl > ~/.local/bin/git-xlsx-textconv
chmod +x ~/.local/bin/git-xlsx-textconv

スクリプトの追加

docx2txt.plの変換結果を標準出力にするためのシェルスクリプトを作成します。

~/bin/docx2txt

#!/bin/bash
perl /usr/local/opt/docx2txt/bin/docx2txt.pl $1 -

環境変数の追加

git-xlsx-textconvの依存ライブラリの参照解決のため、環境変数PERL5LIBを追加します。

/.bash_profile

export PERL5LIB=$HOME/perl5/lib/perl5/

設定ファイルの記載

docx, pptxの場合に、docx2txt, pptx2txtを呼び出すように、
~/.config/git/attributes, ~/.gitconfigを設定します。

~/.config/git/attributes

*.docx diff=wordx
*.pptx diff=powerpointx
*.xlsx diff=excelx

~/.gitconfig

[diff "wordx"]
  textconv = docx2txt
[diff "powerpointx"]
  textconv = pptx2txt
[diff "excelx"]
  textconv = git-xlsx-textconv

gitが、MicrosoftOfficeの一時ファイルを無視するように、gitignoreを追加しておきます。

curl -L https://raw.githubusercontent.com/github/gitignore/master/Global/MicrosoftOffice.gitignore >> ~/.config/git/ignore

実行例

pptx, docxファイルをgitに追加して、
git diffを実行すると、以下のように差分が確認できるようになります。

$ git diff
diff --git a/powerpoint.pptx b/powerpoint.pptx
index d05047e..385ef08 100644
--- a/powerpoint.pptx
+++ b/powerpoint.pptx
@@ -1,4 +1,4 @@
 プレゼンの
 タイトル
-スライドのタイトル
 このテキストはパワーポイントの文章です
+文章を追加
diff --git a/word.docx b/word.docx
index d026671..b7c4019 100644
--- a/word.docx
+++ b/word.docx
@@ -1,2 +1,2 @@
 このテキストはワードの文章です。
-
+文章を追加

以上。