2

Windows7 Ultimate (32 ビット) マシンのルートに「cv2」というディレクトリを含む TortoiseHG (2.3.2) リポジトリがあります。「cv2」の別のサブディレクトリに新しいファイルを追加すると、TortoiseHG はディレクトリに応じて「cv2」または「CV2」として「cv2」を表示します。

たとえば、「tom.cs」というファイルを次のディレクトリに追加すると、TortoiseHG で次の結果が得られます。

Physical Directory                 TortoiseHG Filename
...\cv2\Common\tom.cs              cv2/Common/tom.cs
...\cv2\tom.cs                     CV2/tom.cs
...\cv2\WinClient\tom.cs           cv2/WinClient/tom.cs
...\cv2\WinService\tom.cs          CV2/WinService/tom.cs

これがいつ始まったのかはわかりませんが、「cv2」と「CV2」の両方にコミットした結果、リポジトリ内に 2 つの別々のディレクトリが作成されたということです (これについて私ができることはあまりないと思います)。

リポジトリには単一のソリューションがあり、サブディレクトリに 3 つのプロジェクトがあります (「cv2」は「cp2」と「NotificationService」とともにその 1 つです)。ソリューション ファイルのディレクトリ名が「cv2」ではなく「CV2」であることがわかりました。「差分」が Visual Studio で機能しなくなったため、現在は変更されていますが、最初からそうであり、最初のコミットから変更されていません。残念ながら、その時に Windows ディレクトリの名前を変更したかどうか思い出せません... 変更した可能性があります。

ディレクトリに応じて「CV2」または「cv2」のいずれかを持つというこの不一致について、私が何かできることはありますか? コマンド プロンプトから Windows ディレクトリの名前を変更しようとしましたが、成功しませんでした。Mercurial が Windows マシンで実行されている場合、大文字と小文字の区別が無視されているという印象を受けましたが、誤解されていたようです。

私はプロジェクトの唯一の開発者なので、変更によって他の人を台無しにする危険はありません。

4

1 に答える 1

4

はい、Mercurial は大文字と小文字を区別しないファイルシステムではファイル名の大文字と小文字を無視しますが、ファイル名を大文字と小文字を区別してリポジトリに保存する必要があります。

Mercurial 2.2-rc (リリース候補版を Windows で実行する方法については、wikiを参照してください) を使用すると、以下を実行できます。

hg rename CV2/tom.cs cv2/tom.cs

次のコミットの「名前の変更」をスケジュールします。ファイルは、大文字と小文字を区別しないファイル システムの適切な場所に既にあるため、ディスク上で移動しませんが、名前の変更は履歴に記録され、新しいチェックアウトはディスク上で正しい大文字と小文字を区別します。

wiki には、将来自分自身を保護するために使用できるcaseguard 拡張機能など、さらに多くの手順があります。ただし、これは Mercurial 2.2 でほとんど修正されるはずです。以前のバージョンと比較して、大文字と小文字の折り畳みの問題を処理するためのコードが大幅に増えます。

于 2012-04-26T18:32:54.523 に答える