windowsでgitするときにはGit Extentionsを使っています。
かなり便利だと思うんですがWord,Excel,PowerPoint等いわゆるバイナリファイルの差分表示ができません。
ということで、バイナリ→テキスト変換にApache Tikaを使って差分表示に挑戦します。
環境
Windows 7です。
Javaランタイム
1
2
3
4
|
c:\usr\bin>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
|
インストールと動作確認
ダウンロードページの “Mirrors for tika-app-?.??.jar” から、コマンドラインで使えるjarをダウンロードします。
現時点でのバージョンはtika-app-1.14.jar。
C:\usr\binにダウンロードしました。
コマンドラインで実行してみます。
こまかい使い方はこちら。
1
2
|
c:\usr\bin>java -jar tika-app-1.14.jar -V
Apache Tika 1.14
|
適当なofficeファイルを読み込ませてみて、テキストが出れば動作確認OK。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
c:\usr\bin>java -jar tika-app-1.14.jar --text "C:\temp\Office2010_compatibility_for_format_layout.docx"
Microsoft? Office 2010
ファイル フォーマット および
ドキュメント レイアウトの互換性について
2010 年 6 月
目次
はじめに 4
Microsoft Office 2010 で採用されているファイル形式 7
Open XML 形式について 7
互換モードと互換性チェック 11
Office 互換機能パックについて 16
Office 互換機能パック利用時の注意点 19
その他のアプリケーションのファイル形式について 25
Microsoft Office 2010 のセキュリティ 29
Microsoft Office 2010 のセキュリティの概要 29
セキュリティ センター 33
暗号化 34
Information Rights Management 39
...............................................
|
.gitconfigの設定
Windowsだと.gitconfigの場所を見失いがちですが、
1
|
git config --list --show-origin
|
で参照先が出たりでなかったりします。
うちの環境では C:\Users\%USERNAME%.gitconfig にありました。
diffの定義を追加します。
1
2
|
[diff "tika"]
textconv = java -Dfile.encoding=UTF-8 -jar c:/usr/bin/tika-app-1.14.jar --text
|
Git Extentions内ではutf8を使ってるポイので”-Dfile.encoding=UTF-8″を追加してます。
.gitattributesの設定
ワーキングディレクトリに.gitattributesを追加して拡張子とdiff定義を関連付けます。
1
2
3
|
*.pptx diff=tika
*.docx diff=tika
*.xlsx diff=tika
|
グローバルな設定にできなくもないようですが、今回はレポジトリローカルで。
表示してみる
適当なword文書の差分を取ってみます。
出た。
で
ちょっと遅いっすね。
jarが50Mも有るんで、きびきびした動作は期待できないのかも。
バイナリ->テキスト変換ツールでもっと早いのがあれば差し替えると良いかと思います。
とはいえ、いちいちWinMergeとかの外部ツールを立ち上げるのも面倒なんで、これはこれで良いんじゃないでしょうか。