#背景
Windowsのファイルシステムでは、半角英字の大文字・小文字を区別しません。表記上は区別できますが、ファイルパスとして大文字と小文字が等価となるようです。そのため、大文字・小文字を区別するunixサーバ等とファイル転送をする際にはこの問題が常にそばにあります。
この記事ではGitの作業フローを例に、現象の一例を示します。
#再現手順
※クライアントとしてTortoiseGitを使用します。
大文字混じりのファイル aBaBaB.txt を作成して git add
。
小文字だけの同名ファイル ababab.txt を作成。
※ Git管理下のファイルだと誤認されます。
ababab.txt を編集して git commit
すると、 aBaBaB.txt として扱われます。
#例えばどんな時に発生するか
開発工程をGitで管理し、本番サーバはSCP等でファイル転送を行って管理している構成において、運用開始後に緊急のバグFix等があり、何らかの理由で本番のソースコードがGitリポジトリの内容と乖離してしまったケースを想定します。
前述のバグFixでファイル命名規則による右のような修正 myClass.php → myclass.php を行っていた場合に、後日、差分をマージする作業をWindows上で行うと、その修正が検出されずリポジトリへの反映が漏れる現象につながります。