GitHub Desktop 改行コードに関する警告の検証・推測と対処例1/3

ソースコードなどをバージョン管理しながらインターネット上で公開できるサービス「GitHub」を GUI で操作する無料のアプリGitHub Desktop」の管理に、ローカルの Git リポジトリを追加した際に表示される改行コードに関する警告について、検証推測、その結果としての対処例を紹介します。

GitHubDesktop インストールとサインイン1

※ GitHub Desktop Version 3.5.0 (x64) を使用します。
※ OS は Windows 10 Home です。

本記事の概要

本記事では、GitHub Desktop アプリで表示される改行コードに関する警告 (This diff contains a change in line endings from ‘LF’ to ‘CRLF’.) について調べました。
結局は、リポジトリの内容を変えてその警告が出るかどうかを検証して、その結果として、

Windows で Git の設定 core.autocrlf == true の場合に、作業ディレクトリ差分を持つテキストファイルの改行コードが LF の場合、その後行われるかもしれないチェックアウトでその改行コードが CRLF に変わる可能性を警告しているもので、それを了承していれば警告を無視して問題ない

という推測対処(無視で問題なし)に至りました。

以降は、その検証結果や公式の引用を紹介します。

リポジトリを追加した直後に表示された改行コードに関する警告

Git リポジトリを GitHub Desktop アプリの管理に追加すると、そのリポジトリで管理しているファイルの改行コードに関する警告が表示されました。

This diff contains a change in line endings from ‘LF’ to ‘CRLF’.

この差分には、行末の「LF」から「CRLF」への変更が含まれています。

GitHub Desktop の警告文と Google 翻訳
GitHub Desktop ファイルの改行コードの警告の対処例1

.md や .cfg といった改行 (CRLF) を含む、テキストファイルについては、上記の改行コードに関する警告メッセージが表示されました。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査1

この章で紹介する4つのファイルは、現在選択しているブランチに追加されていないファイルです。
そのため、全行が + の差分になっています。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査2

また、改行のないテキスト(.svg) では、テキストの差分は表示されますが、改行コードに関する警告メッセージは表示されませんでした。

テキストではないバイナリファイル(.png) などを選択すると、改行コードに関する警告表示されませんでした。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査4

※画像は GodotEngine のプロジェクトの初期に同梱されている png ファイルです。

以上のように、選択しているファイルの内容によって警告メッセージの表示・非表示が切り替わるため、警告メッセージは、現在選択しているファイルの差分情報について警告していると思います。

小さなサンプルリポジトリによる警告メッセージの表示の有無の確認

以下の2つのファイルがあるリポジトリを作成して、 GitHub Desktop アプリの管理に追加しました。

  • RepoAutoCRLF1
    • a.txt
      追加・コミット済み。複数行の日本語の文章
    • b.bmp
      追加・コミット済み。16×16 の画像

リポジトリを管理へ追加する手順については、以下の記事を参照してください。

検証した条件の組み合わせ表記の説明

以降は、わかりづらいですが、条件ごとに警告メッセージが表示されたかを、同じ形式の名前の章で1つずつ紹介します。

「アプリ追加後」は、すでに GitHub Desktop アプリに追加済みのリポジトリの作業ディレクトリでファイルを追加/変更したことを表しています。
「アプリ追加前」は、作業ディレクトリでファイルを追加/変更した後に、 GitHub Desktop アプリにリポジトリを追加したことを表しています。

「Git 管理済み」は、 Git に追加・コミットしているファイルを、 「Git 管理外」は、 Git に追加していないファイルを表します。

「差分なし」は、 Git の現在のコミットとの差分がない作業ディレクトリのファイルを、「差分あり」は差分のあるファイルを表します。

「CRLF」または「LF」は、そのテキストの改行コードです。

アプリ追加後の Git 管理済み、差分なし、CRLF → 警告なし

作業ディレクトリに現在のコミットとの差分がない状態でリポジトリを読み込んだ結果、改行コードについての警告は表示されませんでした。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査5

アプリ追加後の Git 管理済み、差分あり、CRLF → 警告なし

a.txt に2行追加して保存すると、a.txt の差分がすぐに検出されました。
しかし、警告メッセージは表示されません

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査6

アプリ追加前の Git 管理済み、差分あり、CRLF → 警告なし

作業ディレクトリの a.txt に差分がある状態のフォルダ全体をコピーして RepoAutoCRLF2 フォルダを作成して、それを GitHub Desktop アプリのリポジトリの管理に差分のある状態追加します。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査7

リポジトリに追加した時点で、テキストファイル(複数行)に、差分がある場合でも、警告メッセージは表示されませんでした。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査8

アプリ追加後の Git 管理外、差分なし、CRLF → 警告なし

そのリポジトリの作業ディレクトリに c.md という複数行を保存したテキストファイルを作成しました。
これは、Git 管理に追加・コミットをしていない Git 管理外のファイルです。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査9

Git 管理外の c.md ファイルは、追加の候補として GitHub Desktop アプリのリストにすぐに検出され、差分(追加前なので全行の追加)も表示されました。
しかし、警告メッセージは表示されませんでした。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査10

アプリ追加前の Git 管理外、差分なし、CRLF → 警告なし

次に、この管理外のファイルを、 GitHub Desktop アプリの管理に追加した時点で検出したらどうなるかを確認します。

さきほどの c.md (Git 管理外のテキストファイル)をもった RepoAutoCRLF2 フォルダをコピーして、RepoAutoCRLF3 フォルダを作成して、それを GitHub Desktop アプリのリポジトリの管理に追加します。

GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査11

GitHub Desktop アプリの管理に追加した時点で、追加の候補として c.md が検出されて、差分も表示されました。
しかし、警告メッセージは表示されませんでした。

以下のように、警告メッセージが表示されたファイルと条件を同じにしたのですが、警告メッセージは表示されませんでした。

  • GitHub Desktop アプリの管理に追加した時点で、差分が検出されるファイル。
  • 同じ md 形式。内容も複数行のテキストファイル。
  • Git 管理外で、Git 追加候補のファイル。
GitHub Desktop アプリの差分の改行コードに関する警告の表示条件の調査12

このことから、GitHub Desktop アプリの仕様、おそらくは差分のツールの仕様によって、より細かな条件を満たさないと、警告メッセージは、表示されないことがわかりました。
本記事では、これ以上、この警告メッセージの発生条件を調べませんが、調べた結果が何かの参考になるかもしれないので、記述しました。

この検証のまとめ

テキストファイル(改行有り、改行無し)、バイナリファイルの差分情報を切り替えると、警告メッセージの表示が切り替わるため、この警告メッセージは、リポジトリ全体ではなく、選択中のファイルの差分について警告していると推測できました。

また、以下の条件の組み合わせのファイルでは警告が表示されないことがわかりました。

GitHub Desktop にリポジトリを追加後の操作かファイルを Git で管理しているかファイルに Git の差分はあるかファイルの改行コード警告の有無
アプリ追加後Git 管理済み差分なしCRLF警告なし
アプリ追加後Git 管理済み差分ありCRLF警告なし
アプリ追加前Git 管理済み差分ありCRLF警告なし
アプリ追加後Git 管理外差分なしCRLF警告なし
アプリ追加前Git 管理外差分なしCRLF警告なし

今回はここまで

今回は、 GitHub Desktop アプリに表示された、改行コードに関する警告メッセージと、それが発生する条件を絞り込むために行ったサンプルリポジトリの各結果を紹介しました。

次回は、今回の結果を踏まえて、警告メッセージがでるパターンとその対策について紹介します。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました