読者です 読者をやめる 読者になる 読者になる

ソフトウェアエンジニア現役続行

雑多なことを綴ります

Stashでdiffビューの文字化けを解消する方法

Transcode diffs を有効にして文字化けを解消

Stash 3.1より前のバージョンでは、UTF-8 以外のファイルは diff ビューで文字化けを起こしていました。Stash 3.1以降では、「Repository details(リポジトリ詳細)」の「Transcode diffs(diffをトランスコードする)」を有効にすることで、この文字化けを解消できます。詳しくは Using diff transcoding in Stash に記載されています。

なぜ Transcode diffs はデフォルトで無効?

上記リンクによると、Transcode diffs を有効にすると Stash は文字化けを回避するためにファイルを textconv で UTF-8 に変換してから git diff を行います。ファイルのサイズなどによってはこの処理が重くなってしまうため、パフォーマンスの観点から Transcode diffs はデフォルトで無効になっています。

そもそも、なぜ UTF-8 に変換してから diff ?

これは Stash ではなく Git が UTF-8 しかサポートしていないのが原因です。Stash のソースコードを確認してみると、Stash は内部で JGit という Java の Git ライブラリを使っています。