Git
Excel
msysGit

Gitで管理しているExcelファイルの差分を見る

More than 3 years have passed since last update.


動機

ExcelファイルをGitで管理しているときに、差分を見られると嬉しい。Git for Windows (msysgit)は、WordファイルやPDFファイルは差分を見られるように設定済で配布されているが、Excelファイルについては未対応。


できたこと


  • git diffでExcelファイルに加えた変更を確認してからgit commitできる

  • もちろん過去の履歴の差分も見られる

  • 行頭にシート名が含まれていて複数シートにも対応している

CUIでのExcelファイルの差分表示例

cui.png

GUI (Git Extensions)でのExcelファイルの差分表示例

gui.png

超便利!!!


使ったもの


手順


Go環境の構築

まずはGo言語の環境を構築します。といっても、.msi形式のインストーラををダウンロードしてきてインストールするだけです。.msiファイルのダウンロードは https://golang.org/dl/ から。

インストール後は、環境変数GOPATHにフォルダを指定します。ちなみにですが、環境変数の管理にはRapid Environment Editorがお勧めです。GOPATHはどこでもよいです。自分しか使わないPCなので、C:\gocodeフォルダをつくり、システム全体の環境変数として指定しちゃいました。

gopath.png

コマンドプロンプトでgoコマンドが通ることと、GOPATHが設定されていることを確認します。

> go version

go version go1.4.2 windows/amd64

> go env GOPATH
C:\gocode


git-xlsx-textconvの取得とビルド

コマンドプロンプトで以下のとおり実行します。

> go get github.com/tokuhirom/git-xlsx-textconv

%GOPATH%\bin\git-xlsx-textconv.exeが実行できることを確認します。

> %GOPATH%\bin\git-xlsx-textconv.exe

2015/04/07 22:24:53 Usage: git-xlsx-textconv file.xslx


Gitの設定

Gitで設定しなくてはいけないのは、いつものgit configgitattributesの2つ。リポジトリごとの設定でもいいのですが、これまた自分しか使わないPCなので、msysgitのグローバルな設定に施してしまいます。msysgitのグローバル設定はC:\Program Files (x86)\Git\etc配下においてあります。

C:\Program Files (x86)\Git\etc\gitconfig をAdministrator権限のテキストエディタで開き、以下を追記します。ここでは、%GOPATH%ではなく$GOPATHを使うのが正解の模様。

[diff "xlsx"]

binary = true
textconv = $GOPATH/bin/git-xlsx-textconv

C:\Program Files (x86)\Git\etc\gitattributes を同じくAdministrator権限のテキストエディタで開き、以下を追記します。

*.xlsx  diff=xlsx

*.XLSX diff=xlsx

以上で終わりです。簡単で便利です。


TODO

簡単とはいえ手順が必要なのはいけてないので、msysgitの本家に貢献できないか考える。

ちなみに、msysgitのデフォルトのgitattributesには以下が指定されていて、これらのファイルの差分は特に設定なしに差分が取れる。

*.doc   diff=astextplain

*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain