小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


VS 2005でヘッダファイル名の大文字小文字が勝手に変換されてしまう件

はじめに

Visual Studio 2005 Proでhoge.hのようなヘッダファイルを編集すると、ある一定の条件でファイル名の大文字小文字が変換される不具合があります。

先日、Visual Studio 2005でヘッダファイルを編集し、Subversionのリポジトリにコミットしようとしたら、通常であれば、更新を意味する赤いびっくりマークであるはずのオーバーレイアイコンが、バージョン管理対象外を意味する?マークになっていました。

Visual Studioで編集するとヘッダファイル名の大文字・小文字が自動変換される

調べてみると、Visual Studioの不具合で、ヘッダファイル名が書き変わってしまうようです。

C++、MFCにて
1.コードウィンドウで、ソースファイル(cpp)を編集中に右クリック->「ヘッダーファイルへ移動」で表示されるファイルの拡張子が大文字「H」になる。
2.コンパイルエラー発生で、出力ウィンドウからエラー対象のヘッダファイルを、ダブルクリックで開くと、全て小文字のファイル名になる。
1,2どちらも保存するとファイル名が大文字・小文字変換されてしまい構成管理ツールなど利用していると問題になります。
ヘッダファイルが大文字・小文字に自動変換されます | Microsoft Connect はてなブックマーク - ヘッダファイルが大文字・小文字に自動変換されます | Microsoft Connect

大文字小文字が変換されるとどうなるか

Subversionではファイル名の大文字小文字を区別します。Hoge.hとHOGE.hは別々のファイルとして扱われます。誤って、大文字小文字が変換されてしまったファイルをそのままリポジトリで登録してしまった場合、厄介なことになります。

Subverion内ではファイル名の大文字小文字を区別しますが、Windows上では大文字小文字違いのファイルは存在できません。ファイルとしてエクスポートする場合はどちらか1つしかエクスポートできないことになります。
正しく更新したつもりでも、実際エクスポートしてみたらもう一方の古いファイルが取り出される可能性があるため、上記の事象が発生した場合は注意する必要があります。

暫定的な回避方法

ヘッダファイルの編集にはVisual Studioを使わず、別のテキストエディタを使用する。

あるいはVisual Studioで編集済みのヘッダファイルを退避しておき、大文字小文字が変換されたファイルを一度削除し、リポジトリから最新のものをチェックアウトします。(svn update)
この状態でチェックアウトしたファイルに対して、退避していたファイルをマージします。(WinMergeなどで修正を加えるのが楽だと思います)

Visual Studio 2010 スタートアップガイド
WINGSプロジェクト
翔泳社
売り上げランキング: 28304