git diffでdocx, pptx, xlsxのテキスト差分を確認できるようにする
2019/04/01 xlsxの差分表示も追記しました
git diffで、
Word, PowerPoint, Excelのテキスト差分を確認できるようにするための設定手順をまとめました。
macos用の手順です。
方法は以下のブログ記事で書かれている内容と同じですが、
dotfilesで管理することを想定し、ユーザ単位に設定しています。
MS Wordで書かれた原稿をテキストファイルでGit管理する | Fuzoku実践入門ブログ
http://learning-fuzoku.hatenablog.com/entry/2015/03/10/183954
必要なツールのインストール
docxファイルからテキストを出力するため、docx2txtをインストール。
brew install docx2txt
pptxファイルからテキストを出力するため、pptx2txtをインストール。
mkdir -p ~/bin
curl -L https://raw.githubusercontent.com/welcheb/pptx2txt.sh/master/pptx2txt.sh > ~/bin/pptx2txt
chmod +x ~/bin/pptx2txt
xlsxファイルのテキスト出力するため、git-xlsx-textconvをインストール。
brew install cpanm
cpanm Spreadsheet::XLSX
curl -L https://raw.githubusercontent.com/yappo/p5-git-xlsx-textconv.pl/master/git-xlsx-textconv.pl > ~/.local/bin/git-xlsx-textconv
chmod +x ~/.local/bin/git-xlsx-textconv
スクリプトの追加
docx2txt.plの変換結果を標準出力にするためのシェルスクリプトを作成します。
~/bin/docx2txt
#!/bin/bash
perl /usr/local/opt/docx2txt/bin/docx2txt.pl $1 -
環境変数の追加
git-xlsx-textconvの依存ライブラリの参照解決のため、環境変数PERL5LIB
を追加します。
/.bash_profile
export PERL5LIB=$HOME/perl5/lib/perl5/
設定ファイルの記載
docx, pptxの場合に、docx2txt, pptx2txtを呼び出すように、~/.config/git/attributes
, ~/.gitconfig
を設定します。
~/.config/git/attributes
*.docx diff=wordx
*.pptx diff=powerpointx
*.xlsx diff=excelx
~/.gitconfig
[diff "wordx"]
textconv = docx2txt
[diff "powerpointx"]
textconv = pptx2txt
[diff "excelx"]
textconv = git-xlsx-textconv
gitが、MicrosoftOfficeの一時ファイルを無視するように、gitignoreを追加しておきます。
curl -L https://raw.githubusercontent.com/github/gitignore/master/Global/MicrosoftOffice.gitignore >> ~/.config/git/ignore
実行例
pptx, docxファイルをgitに追加して、git diff
を実行すると、以下のように差分が確認できるようになります。
$ git diff
diff --git a/powerpoint.pptx b/powerpoint.pptx
index d05047e..385ef08 100644
--- a/powerpoint.pptx
+++ b/powerpoint.pptx
@@ -1,4 +1,4 @@
プレゼンの
タイトル
-スライドのタイトル
このテキストはパワーポイントの文章です
+文章を追加
diff --git a/word.docx b/word.docx
index d026671..b7c4019 100644
--- a/word.docx
+++ b/word.docx
@@ -1,2 +1,2 @@
このテキストはワードの文章です。
-
+文章を追加
以上。