動機
ExcelファイルをGitで管理しているときに、差分を見られると嬉しい。Git for Windows (msysgit)は、WordファイルやPDFファイルは差分を見られるように設定済で配布されているが、Excelファイルについては未対応。
できたこと
- git diffでExcelファイルに加えた変更を確認してからgit commitできる
- もちろん過去の履歴の差分も見られる
- 行頭にシート名が含まれていて複数シートにも対応している
GUI (Git Extensions)でのExcelファイルの差分表示例
超便利!!!
使ったもの
- Git for Windows (msysgit) version 1.8.4.msysgit.0
- Go 1.4.2
- git-xlsx-textconv ab71fc84ecd7ae97b19305ba05159dda867ca7c3
手順
Go環境の構築
まずはGo言語の環境を構築します。といっても、.msi形式のインストーラををダウンロードしてきてインストールするだけです。.msiファイルのダウンロードは https://golang.org/dl/ から。
インストール後は、環境変数GOPATH
にフォルダを指定します。ちなみにですが、環境変数の管理にはRapid Environment Editorがお勧めです。GOPATH
はどこでもよいです。自分しか使わないPCなので、C:\gocode
フォルダをつくり、システム全体の環境変数として指定しちゃいました。
コマンドプロンプトで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 config
とgitattributes
の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