Skip to content
2月 15 / rakkyoo

wordのdocx文章をgitでバージョン管理

最近、細々とgitを使ってバージョン管理しています。

word文章でもgitでバージョン管理をしようと思うのですが、git diffしても変更内容が出てきません。
そこで、あれこれと試していたのですが、とっても簡単にできるみたいですので,備忘録です。

試しに、「~/temp_dir/temp.docx」というファイルを作ってみて
スクリーンショット 2014 02 15 14 12
こんな感じでファイルを作ったあとで、

1
2
3
$ cd ~/temp_dir
$ git init
$ git add temp.docx

としてから、
スクリーンショット 2014 02 15 14 13
こんな感じにファイルを更新して

1
$ git diff

とすると、

1
2
3
4
$ git diff
diff --git a/test.docx b/test.docx
index 186efa7..273fc02 100644
Binary files a/test.docx and b/test.docx differ

となって、何が変更されたのかわかりません。

そこで、docxをテキストに変更して、diffを取ってくれるように設定しました。
やり方はとっても簡単。

1.「docx2txt」の準備


Docx to Text convertor

ここから、v1.2をダウンロードして、解凍します。

解凍すると,

1
2
3
4
$ cd ~/Download/docx2txt-1.2
$ ls 
AUTHORS         COPYING         INSTALL         README          VERSION         docx2txt.bat    docx2txt.pl
BSDmakefile     ChangeLog       Makefile        ToDo            WInstall.bat    docx2txt.config docx2txt.sh

こんな感じなので、、、
この中で「docx2txt.pl」を使えばいいので、パスを通してあるディレクトリにコピーします。

1
$ cp docx2txt.pl ~/bin/

などといった感じです。

1
$ cd ~/bin

として、このperlソースを実行するシェルスクリプトを作って実行権限とします。
これもとっても簡単。

1
2
3
4
$ cd ~/bin
$ echo '#!/bin/bash
docx2txt.pl $1 -' > docx2txt
$ chmod +x docx2txt

これだけ。

そうすると、

1
2
3
4
$ cd ~/temp_dir
$ docx2txt test.docx
First text.
Second text.

こんな感じに使うと、docx内のファイルがターミナル上に表示されるようになります。

これはこれで結構便利です。。。

2.gitを設定する

まず「.gitattributes」を作って、「*.docx diff=wordx」と書きます。

1
2
$ cd ~/temp_dir
$ echo '*.docx diff=wordx' > .gitattributes

こんな感じで十分です。
「.docx」ファイルの時は、diffするときにwordxしてね。っといった感じでしょうか?

次に、「wordx」を定義します。
「.git/config」に以下の内容を追記します。

1
2
[diff "wordx"]
    textconv = docx2text

ターミナルから行うとすると、

1
2
$ echo '[diff "wordx"]
    textconv = docx2txt' >> .git/config

こんな感じでできます。

以上で終了です。

3.確認

先ほどの状態で「git diff」すると、、、

1
2
3
4
5
6
7
8
9
$ git diff
diff --git a/test.docx b/test.docx
index 186efa7..273fc02 100644
--- a/test.docx
+++ b/test.docx
@@ -1,2 +1,2 @@
 First text.
-
+Second text.

こんな感じに、「second text.」が追加されていることが表示されています。

とっても快適に。

[`twib` not found]

Leave a comment

CAPTCHA


This blog is kept spam free by WP-SpamFree.