環境
- Windows7 Professional 32bit
- git version 2.7.2.windows.1
1. Go 言語および git-xlsx-textconv の導入
コマンドプロンプトでの作業ですわ。
go version
コマンドで GO インストール有無を、go env GOPATH
コマンドで GOPATH が設定されていることを、PATTH
コマンドで %GOPATH%bin が設定されていることを確認。まだなら Go 言語のインストール、環境変数設定を行う。go get github.com/tokuhirom/git-xlsx-textconv
git-xlsx-textconv.exe
で2016/03/05 08:21:47 Usage: git-xlsx-textconv file.xslx
などと表示されることを確認
2. Git 設定
設定コマンド
設定ファイルへ反映するのに、次のコマンドを実行しました。
後述していますけれども、コマンドではなく設定ファイルの直接編集でも OK ですの♪
# [[diff "xlsx"]] git config --global diff.xlsx binary false git config --global diff.xlsx textconv '$GOPATH/bin/git-xlsx-textconv' # 属性ファイルのひも付け git config --global core.attributesfile 'C:/Users/username/.gitattributes'
- 設定コマンドで を作成するには、既にあるものと捉えて
diff.xlsx.binary
やdiff.xlsx.textconv
を実行すればよい。 - textconv はフォルダの区切り文字を ¥ にするとどうしても動かずダメだった。→
git config --global diff.xlsx.textconv '$GOPATH¥bin¥git-xlsx-textconv'
- core.gitattributes は次だとダメだった。$USERPROFILE や $HOME を解決できいないっぽい。パスの区切りを ¥ から / へ変えればうまくいくかもしれないが、未検証。
git config --global core.attributesfile '"$USERPROFILE¥.gitattributes"'
git config --global core.attributesfile '"$HOME¥.gitattributes"'
git config --global core.attributesfile ¥"C:¥¥Users¥¥username¥¥.gitattributes¥"
設定ファイル
コマンドで行わずに、設定ファイルを直接編集しても同じ結果を得られますわ♪
下記を追加しました。
[core] attributesfile = C:/Users/username/.gitattributes [[diff "xlsx"]] binary = true textconv = $GOPATH/bin/git-xlsx-textconv
属性ファイル
ユーザーのホームディレクトリにありませんでしたので次の内容で新規作成いたしました。
*.xlsx diff=xlsx *.XLSX diff=xlsx *.xlsm diff=xlsx *.XLSM diff=xlsx
3. 確認手順
確認用のリポジトリを作成します。エクセルをコミット後、再度エクセルを編集して、git diff
で違いが表示されることを確認します。
具体的には次の手順となりました♪
- 任意の場所で test_git-xlsx-textconv フォルダを作成し、そこで
git init
- Book1.xlsx を作成し、ワークシートを適当に編集。例えば次。
No | 項目 |
1 | aaa |
2 | ビー |
3 | ccdc |
git add .
でインデックスに追加し、git commit -m "最初のコミット"
でコミット。- Book1.xlsx を編集。例えば次
No | 項目 |
1 | aaa |
2 | bbb |
3 | ccc |
4 | ddd |
git diff
で確認。次のように表示されれば OK$ git diff diff --git a/Book1.xlsx b/Book1.xlsx index eba3587..8ce27d2 100644 --- a/Book1.xlsx +++ b/Book1.xlsx @@ -1,4 +1,5 @@ [Sheet1] No 項目 [Sheet1] 1 aaa -[Sheet1] 2 ビー -[Sheet1] 3 ccdc +[Sheet1] 2 bbb +[Sheet1] 3 ccc +[Sheet1] 4 ddd
バイナリファイルのため通常では比較できないエクセルでも、差分を表示することができるようになりました!
やったぜ!
ちなみに、今回の設定を行う前では、diff を行っても「違いがある」ということしかわかりませんでしたの><。
$ git diff diff --git a/Book1.xlsx b/Book1.xlsx index eba3587..8ce27d2 100644 Binary files a/Book1.xlsx and b/Book1.xlsx differ
おまけ。その他のポイント
git config
コマンドや設定ファイルの編集で用いるパス・フォルダの区切り文字は、「¥」ではなく「/」を使うほうが事故が発生しにくかったり、悩みにくかったりして、よい。
おわりに
次のページが参考になりました!ありがとう存じます♪
- 進め方。流れ
- グローバルな .gitattributes を指定するオプション core.attributesfile を少し知れた。
本投稿の内容を設定するのに、なんやかんやで、数週間とものすごく時間がかかってしまいました><。
パスの区切り文字に悪戦苦闘しておりましたの!
おそらく Mac や Linux ではこの問題に悩まされることは無いのではないかしら?
以上です。