はじめに
こちらの記事ではGitを用いてMicrosoft Wordで作成した文書をバージョン管理されている方を対象に、より便利に活用するためのGitのカスタマイズ方法について解説しています。Gitでファイルをバージョン管理する方法そのものについては解説しておりません。
対象OS: MacOS(OS X以降)
Word文書をGitで管理する上で、一つ問題が生じます。
それは下記のように前のバージョンとの比較がうまくできないのです。
人類にとって最も厄介な問題のひとつ、Wordで作成した文書のバージョン管理ではないでしょうか。 奇妙なことに、Wordは最悪のエディタだと全ての人が知っているにも係わらず、皆がWordを使っています。 Word文書をバージョン管理したいと思ったなら、Gitのリポジトリにそれらを追加して、まとめてコミットすればいいのです。しかし、それでいいのでしょうか? あなたが git diff をいつも通りに実行すると、次のように表示されるだけです。
$ git diff
diff --git a/chapter1.docx b/chapter1.docx
index 88839c4..4afcb7c 100644
Binary files a/chapter1.docx and b/chapter1.docx differ
これでは、2つのバージョンをチェックアウトして、目視で見比べなくては、比較はできませんよね?
git-scm.comより引用
8.2 Git のカスタマイズ - Git の属性
事象と解決策
Word文書はファイル形式が一般的なテキストファイルと違い、独自の「docx」となっています。
そのためGit上では画像ファイルなどと同等のバイナリファイルでの比較となり、テキストファイルでの比較とは違い、記述が変わったことはわかりますが文書のどこがどう変わったのかという目視での確認ができません。
そこでMacOSに付属しているテキスト変換ツールの「textutil」を用いて、Gitでの文書比較前に「docx」ファイルを「txt」ファイルに変換した上で比較するように、Gitをカスタマイズします。
Gitのカスタマイズ
フォルダ構成
word/
└── .git/
└── sample.docx
└── .gitattributes(※新規作成)
まずはじめにGit管理をしているフォルダ直下(Gitリポジトリのルートディレクトリ)に「.gitattributes」ファイルを作成します。※.(ドット)始まりのファイルです。
※.gitattributesファイルとは?
ファイルの中身に下記を記述して保存します。
*.docx diff=textutil
次にGitの設定ファイルであるconfigファイルを編集します。
「.git/config」(.gitフォルダ内のconfigファイルになります。)
.(ドット)始まりのフォルダ/ファイルは隠しフォルダ/ファイルと呼ばれ、MacのFinderアプリでは初期状態で可視化されていません。この隠しフォルダを開く場合は、フォルダ上で「Cmd + Shit + .」を同時に押すことで可視化設定をオン/オフすることができます。
...
(中略)
...
(以下、追記)
[diff "textutil"]
textconv = textutil -convert txt -stdout
設定は以上となります。
それでは具体的にどう変わるのか、確認してみましょう。
$ git diff
index 88839c4..4afcb7c 100644
--- a/chapter1.docx.docx
+++ b/chapter1.docx.docx
@@ -10,7 +10,9 @@ Maecenas mauris lectus,
• Mauris id ex erat.
• Morbi viverra semper lorem nec molestie.
• Maecenas tincidunt est
-Diff Text
+Diff Text
+Vestibulum neque massa, scelerisque sit amet ligula eu, congue molestie mi. Praesent ut varius sem.
...(以下略)
🍺🍺🍺