Azure DevOps Git環境で改行コードを管理する

本記事ではソースコード管理における、改行コードの統一方法について記載いたします。

  • この記事でわかること
    • core.autoCRLFの利用方法と推奨設定
    • .gitAttributesの利用方法と推奨設定

※ Windowsでの操作を前提としています。

本記事を記載することになった経緯

複数人でプログラム開発を行っていると、別環境のGitやDevOpsにソースコードを連携することがあるかと思います。

その際に改行コードを考慮しないと、変更履歴に多量の改行コードの修正が入るなどして管理が難しくなります。

管理が難しくなることで、入れてはいけない変更がソースコードに含まれるリスクが高まります。そこで、改行コードルールの設定を忘れないように、本記事にまとめました。

core.autoCRLFの仕様と設定

core.autoCRLFという設定があります。概要は以下です。

  • ture
    • コードをチェックアウトするときに行末の LF を CRLF へ、コミット時にCRLFからLFへ自動変換します。
  • input
    • コミット時にCRLFからLFへの変換のみ実施します。
  • false
    • 自動変換を行いません。

現在の設定方法を確認する場合は、以下gitコマンドを利用してください。

git config --get core.autocrlf

設定を変更したい場合は以下のように実施してください。

※ 必要に応じて、「true」の部分を「false」や「input」としていただければと思います。

git config --global core.autocrlf true

.gitAttributesの仕様と設定

改行コードの設定については、上記のcore.autoCRLFの設定を行えば問題ありません。

しかしながら、何らかの原因で改行コードが自動変換されないファイルが発生することがあります。

その際に必要になる、gitAttributeの設定方法についても記載いたします。

属性ファイル「.gitAttributes」の概要

.gitAttributesファイルは、Gitリポジトリ内のファイルの属性を指定するための設定ファイルです。このファイルは、特定のファイルやディレクトリに対して、Gitの動作や振る舞いを制御するために使用されます。

これを利用する事で、各ファイルの行末文字の正規化方法を指定できます。

.gitAttributesの追加方法

Visual studio を起動し、git管理しているソリューションを開きます。

上部のタブ「ツール」から「オプション」を選択します。

「ソース管理」から「Gitリポジトリ」を表示し「全般」を押下します。

表示された画面下部の属性ファイルから追加すると.gitAttributesファイルが追加されます。

.gitAttributesへの記載内容

コミット時にCRLFからLFへ自動変更を行う場合、text を指定します。core.autoCRLF 設定と比較すると input に相当します。

*.cs text

上記の「cs」の部分を。ソリューションに含まれているファイル拡張子に適宜変更をしてください。

チェックアウト時の行末の自動変換を設定する場合は、 eol を指定追加します。

*.cs text eol=crlf

上記のように設定すると、core.autoCRLF 設定の true に相当する設定となります。コードをチェックアウトするときに行末の LF を CRLF へ、コミット時にCRLFからLFへ自動変換します。

「crlf」の部分を「lf」にすると、コミット時とチェックアウト時ともに LF へ自動変換されます。

eol を指定しない場合、core.autoCRLFがtrueに設定されている場合はチェックアウト時にCRLFとなりますが、特に指定がない場合は自動変換はしません。

おわりに

基本的には「core.autoCRLF」のみで完結する行末の正規化ですが、何らかの原因でうまくいかない場合は「.gitAttributes」も設定してみるのが良いかと思います。

Windowsでの作業の場合は「core.autoCRLF=ture」にしたうえで .gitAttributes でも text を指定しておくのが良いかなと考えています。

但し、アプリケーション開発初期から設定しておくべきものであり、途中に設定することはお勧めできません。途中から設定すると様々なタイミングで行末変換が実施されてしまい、どこにどのような変更が加えられているか確認するのが難しいためです。

よくご検討の上、参考にしていただけますと幸いです。

執筆担当者プロフィール
千葉 泰規

千葉 泰規(日本ビジネスシステムズ株式会社)

デジタルイノベーション部所属。 取り扱う技術:C#,PowerShell,DevOps,Azure アプリ開発など主にしています。

担当記事一覧