Git
PowerPoint
apachetika

git diffでパワポの差分比較を出来るようにする(Windows)

パワポに対してgit diffを使いたい

パワポはバイナリファイルなので、普通のプログラミングファイルみたいに文字列の差分が取れない。
でもやっぱり差分比較はどうしても欲しい。
と、パワポをGitで管理している筆者は思いました。
(参考)発表用のスライドをGitで学会ごとにブランチで管理(Power Point)

(方法)パワポを文字列情報に変換後、差分を取る

git diff には特定の拡張子の場合、差分を取る前に任意のプログラムを通すことが出来ます。
そのため、バイナリファイルを文字列情報に変換するようなプログラムに通してやれば、バイナリのファイルでも文字列として差分比較が可能になります。

apache tikaでパワポの文字列情報を抽出する

とりあえずやり方だけ

拡張子の表示と隠しフォルダの表示はさせておいてください。

http://archive.apache.org/dist/tika/ からtika-app-1.14.jarというファイルをダウンロードします。(tika-app-1.15.jarやtika-app-1.16.jarだと要らない警告が出た)
ダウンロードしたファイルを好きな場所に置きます。(今回はC:\Program Files\Git\binに置きました)

ユーザーフォルダ(C:\Users\kyusqueみたいな場所)に.gitattributesファイルを作成後、

*.pptx diff=pptx
*.PPTX diff=pptx

という行を書き込んで保存します。

次に、ユーザーフォルダ上の.gitconfigを編集します。

[core]
  attributesfile = ~/.gitattributes

[diff "pptx"]
  binary = true
  textconv = java  -Dfile.encoding=UTF-8 -jar 'C:\\Program Files\\Git\\bin\\tika-app-1.14.jar' -t 

これによって、拡張子ごとの処理の情報が書かれた.gittattributesファイルを読み込み、それに対する文字列変換をどうするか設定できます。

この状態でgit diffをすれば無事、パワポを差分比較できるようになるはずです。

参考

git diff で Office ファイルの差分を見る
Git ExtentionsでOffice文書の差分表示