動機
- Scrivenerで書いている原稿をGitで管理したい
- diffも見たい
保存されるファイル形式
- Scrivenerは.scriv拡張子のバンドルを保存する
- バンドルはフォルダの一種であり、原稿の実態は内部のrtfファイルである
- そのままではdiffで差分を閲覧できない
- プレーンテキストとして保存すればいいのだがそれはナシで
- その他にも色々雑多なファイルが含まれるが全部無視
設定
- .scrivバンドルを管理するGitリポジトリ内の各設定ファイルを以下のように記述
.git/info/attributes
*.rtf diff=richtext
.git/Config
# ここはどうでもいい
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
# ここが重要
[diff "richtext"]
binary = true
textconv = textutil -stdout -convert txt
.gitignore
# バンドル内の原稿以外のファイルを全部無視
*.html
*.checksum
*.xml
*.autosave
*.backup
*.indexes
*.lock
*.txt
*.jpg
*.scrivx
*.plist
補遺
- あとは普通に
git diff
でOK - いらんファイルがステージされたら
git rm --cached $(git ls-files --full-name -i --exclude-standard)
でまとめて削除 -
textconv
で指定するコマンドの標準出力が比較される模様
参考
- テキストでないファイルのdiff(差分)をとる方法 - ザリガニが見ていた...。
- ASCII.jp:知る人ぞ知るテキスト形式変換コマンド「textutil」の謎を解く (1/2)|Apple Geeks
giboで自動生成できるらしい
まだ試してない