GitのGUIクライアントとしてForkを愛用してるんですが、
SJISで書かれたファイルの扱いがどうにもならなくて四苦八苦した際の備忘録的なやつです。
Forkとは?
チェコ共和国で開発されているらしいGit用GUIクライアントです。
fork.dev
リポジトリをフォークするのとはそんなに関係ないはず。
モダンなUIで負荷も軽め、面倒な登録なんかも不要で、コミットに載せるメールアドレスと名前を訊かれるだけです。
また私的利用・商用利用ともに無料で使えるありがたいツールです。
This Freeware License Agreement (the "Agreement") is a legal agreement between you, the end-user,
and Danil Pristupov for the use of this software product ("Software"). Commercial as well as non-commercial use is allowed, free of charge.
環境
OS:Windows10 Home 1909
Fork:1.45.0.0
本題
問題
そんなありがたいツールであるForkですが、リポジトリ内で扱う文字コードをFork内の設定で変えられないという問題があります。
というのもGitの標準がUTF8らしいので、SJISなんかで書かれたファイルを扱うと画面上で化けます。普段から文字コードをUTF8に設定するように心がけていれば問題とも言えないようなことですが、
仕事の都合上なんかでどうしてもUTF8以外の文字コードで書かれたファイルを扱わなければいけない時にしんどいですね。
SourceTreeなんかでは使用する文字コードをSJISに変更したりできるんですが、あれはコミットコメントなんかもSJIS扱いになってしまったような…試したのはだいぶ前の話なのでうろ覚えですが
解決策
Gitの設定を変えてSJISで書かれたものをUTF8に変換して表示するようにします。
といってもコンソールの扱いに慣れていないため、設定ファイルを直に書き換えていきます。
参考にしたのはこちら
qiita.com
設定ファイルどこにあるの
Forkは内蔵Gitの設定ファイルを参照しているようなので、ユーザー単位で一括で変更を適用したい場合は以下のパスの設定ファイルを弄ります。
C:\Users\%USERNAME%\AppData\Local\Fork\gitInstance\2.24.1\etc
「2.24.1」は内蔵Gitのバージョンを示しているので、Forkのバージョンによっては変わるかも知れません。
リポジトリ単位で設定変えたい場合は、下記のgitconfig節の内容をリポジトリ直下の.git\configファイルに、
gitattributes節の内容をリポジトリ直下に.gitattributesファイルを作ってそこに記述します。
gitconfig
以下の内容を追記します。
SJISとか上で書いてますが正確にはCP932で書いたファイルなので、ここでの文字コードの指定はCP932です。
[diff "cp932"] textconv=iconv -f cp932 -t utf-8
ググってるとiconvはGit Bash for Windowsに含まれるのでそれをインストールして~とか出てきたんですが、
Forkの内蔵GitはGit Bashを含んでるので気にしなくていいです。
gitattributes
以下の内容を追記します。
*.(変換したいファイルの拡張子) diff=cp932
結果
Forkの画面を見てみましょう。
git diffで取得してきたと思しき内容がちゃんと化けずに表示されました。
課題
化けずに表示出来てめでたしめでたしという訳ではなく、
参考記事にも書かれていますが課題が残っています
結論
面倒くさいことになりたくなかったらUTF8で書こうな!
*2:記事書いてる途中で調べものしてて気付いたんですが有償化するらしいですね どうすっかな github.com