Bitbucket Server で diff トランスコーディングを使用する

Bitbucket Server を管理する



アトラシアン コミュニティをご利用ください。


As of Bitbucket Server 3.1, Bitbucket Server supports transcoding for diffs. This allows Bitbucket Server to convert files in encodings like EUC-JP, GB18030 and UTF-16 to UTF-8, so they are processed correctly by git diff, which only supports UTF-8. Similar transcoding has been applied to Bitbucket Server's source view since it was released, so this change brings the diff view in line with the source view. Diff transcoding is applied to commit and pull request diffs, as well as the diff-to-previous view.

Git for Windows (旧称 msysgit) には、Unicode パスに関する既知の問題があります。差分トランスコーディングはサポートされているすべてのバージョンの Git for Windows で機能しますが、Unicode パスをサポートするには 1.8.0 以降が必要です。


差分トランスコーディングは (常に実行されるソース ビューのトランスコーディングとは異なり)、各リポジトリで明示的に有効化する必要があります。



There's a performance consideration with transcoding. It is implemented using Git's textconv support, so using it adds overhead to displaying diffs. Where possible, the best approach, given git only supports UTF-8 content, is to use UTF-8 encoding so that transcoding is not necessary. In repositories without non-UTF-8 content, diff transcoding should be left disabled. Other encodings are often a necessity, however, and for repositories containing such content enabling diff transcoding allows using the full range of Bitbucket Server features.


When transcoding is enabled, git diff writes the before and after blobs to temporary files and invokes the textconv script once for each file. The script Bitbucket Server installs uses Perl to send a request back to Bitbucket Server with the path to each temporary file. Bitbucket Server then opens each file, detects the encoding using the same algorithm the source view uses, converts the file to UTF-8 and streams it out for git diff to use. After git diff has invoked the textconv script the temporary files it created are deleted.

ディスクへの blob の書き込み、Perl の起動、および Bitbucket Server へのコールバックはすべて、トランスコーディングのない差分を実行する場合と比較して、オーバーヘッド処理となります。オーバーヘッドの量は、差分の規模によって異なります。2,000 ~ 3,000 行以下の標準的なサイズのファイルを比較した場合、オーバーヘッドは非常に小さく、平均的なサーバーで 50 未満となります。ただし、大きなファイルを比較すると、オーバーヘッドにより、差分の表示に大幅な遅延が発生する可能性があります。

最終更新日: 2021 年 2 月 2 日


Powered by Confluence and Scroll Viewport.