Git の属性
GitLabは、どのファイルをバイナリとして扱うか、差分のシンタックスハイライトにどの言語を使うかなど、Gitのカスタム属性の定義に対応しています。
これらの属性を定義するには、リポジトリのルートディレクトリに.gitattributes
というファイルを作成し、プロジェクトのデフォルトブランチにプッシュします。
エンコーディングの要件
.gitattributes
ファイルは UTF-8 でエンコードされ、Byte Order Mark を含んで_いない_ _必要が_あります。異なるエンコーディングが使用されている場合、ファイルの内容は無視されます。
混合ファイルエンコーディングのサポート
GitLabはファイルのエンコーディングを自動的に検出しようと試みますが、検出器が異なるタイプ(例えばISO-8859-1
)を確信しない限り、デフォルトはUTF-8です。エンコーディングが正しく検出されないと、UTF-8でないエンコーディングのアクセント付き文字などがテキストに表示されないことがあります。
Git には、このような事態に対処するためのサポートが組み込まれており、指定されたエンコーディングとリポジトリ自体の UTF-8 との間でファイルを自動的に変換します。working-tree-encoding
属性を使用して、.gitattributes
ファイルで混合ファイルエンコーディングのサポートを設定します。
使用例:
*.xhtml text working-tree-encoding=ISO-8859-1
この設定例では、Gitはリポジトリ内のすべての.xhtml
ファイルをISO-8859-1エンコーディングでローカルツリーに保持しますが、リポジトリにコミットする際にはUTF-8に変換します。GitLabは正しくエンコードされたUTF-8しか見ないので、ファイルを正確にレンダリングします。
この設定を既存のリポジトリに適用する場合、ローカルコピーのエンコーディングが正しくてもリポジトリが正しくなければ、ファイルをタッチして再コミットする必要があるかもしれません。これはgit add --renormalize .
を実行することで、リポジトリ全体に対して行うことができます。
詳細はworking-tree-encoding を参照してください。
シンタックスハイライト
.gitattributes
ファイルを使用して、ファイルや diff をシンタックスハイライトする際に使用する言語を定義することができます。詳しくは構文強調表示をご覧ください。