SourceTreeでVisualStudioのリソースファイル(.rc)をテキストファイルとして認識・diff表示させるのに苦労したので、手順をメモ。
最初に試したのはgitattributesに*.rc diff=astextplainを追加すること。でもだめだった。そこで、以下を参照しながらやってみたら成功した。
以下、実際の手順。
1. nkfの入手
diff処理する際にUTF-8へと変換するためにnkfというソフトを使う。最新版のソースはOSDNに、古いWindowsバイナリはVectorにある。
最新版では色々バグが治ってるようなので、ソースコードを入手しVisualStudio2022環境でビルドした。以下、WindowsバイナリをVectorから入手している人は無視して3.へ行ってOK。
2. nkfのビルド
VisualStudioのツールメニューにあるコマンドラインより、開発用~のいずれかを起動する(多分どちらでも以下手順には変化なし)。
次に、プロンプト上にて、nkfのソースファイルを展開した場所(正確には、nkf.makというファイルがあるフォルダ)へとCDする。
そして、nmake /f nkf.mak を実行する。
すると、同フォルダにnkf.exeができる。
3. nkfのコピー
入手・生成したnkf.exeを、sourcetree内の所定フォルダなどにコピーする。自分の場合は、下記フォルダにコピーした。
%appdata%\..\Local\Atlassian\SourceTree\git_local\mingw32\bin
4. gitへ変換フィルタを登録
SourceTreeより「操作」メニューの「ターミナルで開く」をクリックし、sourcetreeインストールフォルダ内のbashを起動する。
その後、以下を実行してgitへ変換フィルタを登録する。
git config --global diff.to_utf8.textconv 'nkf -w'
5. gitattributeに変換ルールを追加
以下にあるgitattributeを開く。
%appdata%\..\Local\Atlassian\SourceTree\git_local\etc
そして、以下を追加し保存する。
*.rc diff=to_utf8
*.RC diff=to_utf8
6. 完了
SourceTreeを再起動すれば、差分表示に成功するはず。