Taskwarriorの支援ツールであるvit。日本語環境で利用していた所、 おそろしい事件が発生したため、その対処法。

vitはCUIのタスク管理ツールであるTaskwarriorの支援ツールとして開発されており、 簡単にbrew等でインストール可能です。

$ brew install vit

いちいちCUIでt 12 modi pri:H ..... などと記載しなくても簡単にvimのようなインタフェースで対話的に更新が出来ます。

先日、vitを利用してTODOの書き換えを行ったところ、Taskwarriorのデータが壊れる事件が発生。 日本語でアノテーションなどを大量に記載しておりましたが、何やら反応が鈍くなり、 taskwarrior側でeditモードで書き換えた所、完全にご臨終しました。 全く起動もなにもしません。

復旧

Taskwarriorでは基本的にjsonのようなテキスト形式でファイルは管理されています。

~/.task/

今回の例でいえば、見事に.task配下のファイル達のマルチバイト文字が全て文字化けをして、 nkfで調査したところBINARYと表示されておりました。

もしやと思い、nkfコマンドでutf-8に変換したところ無事に文字化けから復旧。

$ nkf --overwrite -w ~/.task/pending.data

変換後も一部の文字列は完全に壊れていたため、editモードで削除。無事に完全復旧です。 推測の範囲ですが、プログラム側でBINARY -> UTF8に変換保存する過程で途中終了し、 破壊されたように見えたのではないかと思います。

最後に

ワンファイルで管理するTaskwarriorは利便性もありながら、一抹の不安も感じました。 Taskwarriroの元データの定期的なバックアップは忘れずに行いましょう。