epubファイルをgit diffする方法
epub、docx、pptx、SQLiteファイルをGitで追跡する
私はバイナリー形式があまり好きではありません。変更を追跡しにくいからです。幸い、epub、docx、pptx、さらにはSQLiteデータベースのようなバイナリーファイルもGitで扱い、管理しやすくする方法があります。この記事では、こうしたバイナリー形式をgit diffし、バージョン管理できるようにするテクニックを紹介します。
バイナリー形式ごとのGitの設定
ZIPベースのファイル形式を追跡する
tante.ccの記事にもあるように、docxやpptxなどのバイナリー形式は、実質的にはXMLファイルをZIPでまとめたものです。つまり、ある程度の差分表示が可能です。Gitでこれらの形式を扱えるようにするには、次の手順に従います。
Windowsユーザーの方へ:Windowsでは、~/.config/git/attributesというパスは
-
~/.gitconfigファイルを開き(なければ作成し)、次の設定を追加します。[diff "zip"] textconv = unzip -c -aこの設定により、差分を取るときに
unzipコマンドでZIPファイルをASCIIテキストに変換するようGitに指示します。 -
YOUR_GIT_REPOSITORY/.gitattributesまたは~/.config/git/attributesファイルを作成または編集し、次の行を追加します。*.pptx diff=zip *.docx diff=zip *.epub diff=zip *.odt diff=zipこれらの行で、どの拡張子のファイルをGitがZIP形式として差分処理するかを指定します。
これでgit diffを使うと、Gitがこれらのファイルを自動的に展開してASCIIの差分を表示してくれるので、こうしたバイナリー形式の変更を追跡しやすくなります。
古いMicrosoft Officeファイルを扱う
.doc、.xls、.pptなどのMicrosoft OfficeファイルもGitで扱えるように設定できます。手順は次のとおりです。
-
$HOME/.config/git/attributesファイルに次の行を追加します。*.doc diff=doc *.xls diff=xls *.xlsx diff=xls *.ppt diff=pptこれで、これらの拡張子が特定の差分設定に関連付けられます。
-
グローバル設定ファイル
$HOME/.gitconfigまたは$HOME/.config/git/configに次の内容を追加します。[diff "word"] textconv = catdoc binary = true [diff "xls"] textconv = xls2csv binary = true [diff "ppt"] textconv = catppt binary = trueこれらの設定では、ファイル形式ごとに異なるテキスト変換ツールを使い、差分を読みやすくします。
古いOpenOfficeファイルを扱う
OpenOfficeを使っている場合も、Microsoft Officeファイルと同様の方法が使えます。手順は次のとおりです。
-
attributesファイルに次の行を追加します。
*.odt diff=odtこれで、.odt拡張子が差分設定に関連付けられます。
-
configファイルに次の内容を追加します。
[diff "odt"] textconv = odt2txt binary = trueこの設定では、差分を取るために
odt2txtで.odtファイルを変換します。
PDFファイルを扱う
PDFファイルもGitで管理できます。そのためには、attributesファイルに次の変更を加えます。
*.pdf diff=pdf
configファイルには次の内容を追加します。
[diff "pdf"]
textconv = pdf2txt.py
binary = true
この設定により、GitはPDFからテキストを抽出して差分を表示できます。
SQLiteデータベースの変更を追跡する
SQLiteデータベースはバイナリーファイルなので、変更の追跡は難しいことがあります。それでも、GitでSQLiteデータベースの意味のある差分を得ることができます。手順は次のとおりです。
-
設定に「sqlite3」という差分タイプを追加します。
git config diff.sqlite3.binary true git config diff.sqlite3.textconv "echo .dump | sqlite3"あるいは、
~/.gitconfigまたはリポジトリの.git/configに次のスニペットを追加します。[diff "sqlite3"] binary = true textconv = "echo .dump | sqlite3" -
.gitattributesというファイルがなければ作成し、次の行を追加します。*.sqlite diff=sqlite3
これで、SQLiteファイルに対してgit diffなど差分を生成するGitコマンドを実行すると、変更内容がきれいに整形された差分として表示され、SQLiteデータベースの変更を追跡しやすくなります。
まとめ
この記事では、epub、docx、pptx、SQLiteデータベースなどのバイナリー形式をGitで扱うためのさまざまなテクニックを紹介しました。特定のテキスト変換ツールや差分の取り方を使うようにGitを設定すれば、こうしたバイナリーファイルを管理しやすくなり、変更内容も見えやすくなります。これらの方法を使えば、Gitリポジトリでより幅広いファイル形式を効果的に追跡し、バージョン管理できます。
詳しい情報やさらなるカスタマイズの方法については、以下の資料とGitのドキュメントを参照してください。