長生きなプロジェクトを運用していると、途中からコードフォーマッターを導入したり、コード変換器を用いて別の言語に変換したりして元のソースコードのファイルが別のソースコードのファイルに転生しちゃうことってしばしばありますよね。
こういった場合、変換後のファイルのgitのコミットログが fmt!
とか Transpiled!
みたいな感じで塗り潰されてしまい、元のファイルが持っていた歴史が消滅してしまうことがあります。そうなるとlogを辿ることで変更意図を探ってみたり、blameを眺めてニッコリしたりという有益な作業ができなくなってしまい困ること必至です。
そんな状況を解決するために「古いファイルの行レベルの変更履歴」をそっくり新しいファイルに引き継いでコミットを積み直すツールgit-theseusをこの度作成しました。本LTではこのツールのデモと、どう機能を実現しているかを説明します。