機械制御/振動騒音
IR情報 会社情報

PERFORCEテクニカルノート003

image_toyo_ss_img_perforce_title_perforce.gif.gif
テクニカルノート003  
image_toyo_ss_img_all_line_yellow.gif.gif
image_toyo_common_spacer.gif.gif
大文字/小文字の問題とマルチ・プラットフォームの開発
image_toyo_common_spacer.gif.gif
このノートでは、PERFORCEがどのように大文字/小文字をハンドリングするかということと、これに関してユーザが混乱し易い部分について説明しま す。そして、大文字/小文字の問題をどのようにして回避し、発生したときにそれを解決する方法について説明します。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
背景
image_toyo_common_spacer.gif.gif
p4 addを用いてPERFORCEのディポにファイルが追加されると、サーバルート配下にアーカイブ・ファイル(例えば、$P4ROOT/depot/main /file1,v)が書き込まれます。併せて、関連するメタデータのエントリがPERFORCEのデータベース・ファイル(例えば、$P4ROOT /db.rev)に書き込まれます。新しいアーカイブ・ファイル(およびメタデータ・エントリ)は、p4 integrate を用いた場合にも書き込まれます。大文字/小文字を区別するプラットフォーム上でPERFORCEを使用しているとき、このメタデータとアーカイブ・ファイルとの間で、大文字/小文字が異なってしまう可能性があります。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
大文字/小文字を区別する必要がある動作
image_toyo_common_spacer.gif.gif
UNIX上のPERFORCEサーバは、名前における大文字/小文字の違いをサポートします。Windows上のPERFORCEサーバは、大文字/小文字の違いを無視します。ジョブにおけるキーワードの検索では、常に大文字/小文字は無視されます。これをまとめると、下表のように なります。
image_toyo_common_spacer.gif.gif
大文字/小文字の区別 UNIXサーバ Windowsサーバ
パス名およびファイル名 区別する 区別しない
データベース・エントリ
(クライアント名、ラベル名、等)
区別する 区別しない
ジョブ検索のキーワード 区別しない 区別しない

image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
現在のPERFORCEサーバがどのプラットフォーム上で実行しているかを調べるには、 p4 infoを実行します。
image_toyo_common_spacer.gif.gif
以下のセクションでは、PERFORCEサーバとPERFORCEクライアントの様々な組み合わせにおいて、大文字/小文字をハンドリングする動作について説明しています。
image_toyo_common_spacer.gif.gif
UNIXサーバ + UNIXクライアント
image_toyo_common_spacer.gif.gif
問題なし --- メタデータとアーカイブ・ファイルの大文字/小文字は常に一致します。

image_toyo_common_spacer.gif.gif
Windowsサーバ + Windowsクライアント
image_toyo_common_spacer.gif.gif
問題なし --- メタデータとアーカイブ・ファイルとの間に大文字/小文字の違いが発生する可能性があります。しかし、これらの違いは無視されます。

image_toyo_common_spacer.gif.gif
UNIXサーバ + Windowsクライアント
image_toyo_common_spacer.gif.gif
潜在的な問題 -- UNIX(およびUNIXファイルシステム)上のPERFORCEサーバは、大文字/小文字が混在したファイルを保持する可能性があります。 一方、Windowsファイルシステムは大文字/小文字が混在したファイルを保持することができません。

image_toyo_common_spacer.gif.gif
Windowsサーバ + UNIXクライアント
image_toyo_common_spacer.gif.gif
潜 在的な問題 --- Windows上のPERFORCEサーバは、大文字/小文字が混在したメタデータを管理することができます。結果として、WindowsベースのPERFORCEサーバにおいて1つのディレクトリに存在するファイルが、UNIXベースのPERFORCEクライアント・ワーク スペース内では2つ以上の大文字/小文字が異なった別ディレクトリに存在しているのかもしれません。

image_toyo_common_spacer.gif.gif
UNIXサーバ + Windowsクライアント(詳細)
image_toyo_common_spacer.gif.gif
PERFORCEサーバがUNIX上にあり、かつUNIXからアクセスするユーザとWindowsからアクセスするユーザの両方が存在する場合、UNIXユーザは、ファイル名の大文字/小文字のみが異なるファイルをサブミットしないよう注意が必要です。UNIXサーバ自体はこういったファイルをサポートし ますが、Windowsユーザがこのようなファイルをクライアント・ワークスペース同期すると、大文字/小文字だけが異なるディレクトリやファイルは、お互いに上書きし合うことになります。
image_toyo_common_spacer.gif.gif
例えば、UNIXベースのPERFORCEサーバ上において、あるファイルが大文字/小文字の異なる2つのディレクトリ配下に存在し、それらを"main/file1" および "MAIN/file1" とします。次のコマンドをUNIXベースのPERFORCEクライアントから実行したときは、期待どおり、2つの大文字/小文字が異なるディレクトリ配下に2つの異なるファイルと して同期されます。:
image_toyo_common_spacer.gif.gif
p4 sync main/file1
p4 sync MAIN/file1

image_toyo_common_spacer.gif.gif
しかしながら、同じコマンドをWindows上のPERFORCEクライアントから実行すると、2つの異なるファイルはクライアント・ワークスペース内の同一ディレクトリに同期され、最後の同期操作がそれ以前に同期したファイルを上書きしてしまいます。

image_toyo_common_spacer.gif.gif
ファイルの保存方式に加え、大文字/小文字はPERFORCEクライアントのエンティティにも影響を与えます。UNIX上のPERFORCEサーバは、ユーザ名、クライアント名、ブランチ仕様名、ラベル名に対して大文字/小文字を意識します。UNIXサーバに接続しているWindowsユーザは、新しいクライアント・ワークスペースに対するデフォルトの名前とし て、小文字のホスト名が使われることに気を付ける必要があります。例えば、ホスト名 "ROCKET"のマシン上で新しいユーザがクライアント仕様を作ると、そのクライアント・ワークスペース名はデフォルトで "rocket"となります。もし、そのユーザが後でP4CLIENTを "ROCKET" または "Rocket"に設定してしまうと、PERFORCEは「そのクライアント・ワークスペースは未定義」と認識します。このクライアント・ワークスペースを使用するには、P4CLIENTを "rocket" に設定する(もしくはP4CLIENTを設定しない)必要があります。

image_toyo_common_spacer.gif.gif
Windowsサーバ + UNIXクライアント(詳細)
image_toyo_common_spacer.gif.gif
PERFORCEサーバがWindows上で動作している場合、UNIXクライアントからアクセスしているユーザは、大文字/小文字の異なるファイルが同 一の名前空間に保存されることを意識しなければなりません。例えば、次のコマンドをUNIXのクライアント・ワークスペースから実行すると、両方のファイ ルはWindowsサーバ上で同じディポ・ディレクトリに格納されます。:
image_toyo_common_spacer.gif.gif
p4 add dev/file1
p4 add DEV/file2

image_toyo_common_spacer.gif.gif
サーバ上のディポ・ファイルにおいて、Windowsサーバがディポ・パスとファイル名を割り当てる際、最初に見つかった名前が採用されます。上記の例で は、ファイルシステム上に保存されるディポ・パス名は "dev"となります。しかしながら、PERFORCEのメタデータにおけるパスおよびファイル名の大文字/小文字は、ユーザから入力されたままの状態で維持されま す。PERFORCEサーバは、これに基づいてファイルの場所を追跡しますので、大文字/小文字の違いを認識するUNIX上のクライアント・ワークスペー ス内では、これらのファイルは異なるファイルとしてアクセスされます。
image_toyo_common_spacer.gif.gif
Windowsユーザは、新しいファイルを追加する際に、ファイル名やパス名の大文字/小文字に関して一貫性を保つように注意しなければなりません。Windowsクライアントから//depot/main/foo.cおよび //depot/MAIN/bar.cと して追加されたファイルは、UNIXユーザのクライアント・ワークスペースにおいては、2つの異なるディレクトリ配下のファイルとして同期されてしまいま す。Windowsサーバにおけるファイルは、ディポ・ファイルでは大文字のみ(または小文字のみ)のファイルとして格納されたとしても、メタデータでは追加されたときの大文字/小文字が保持されます。また、ディレクトリ・パスにおける実際の大文字/小文字は、コマンドラインでどのように入力されたか、ま たはドラッグ&ドロップ操作においてOSがどのように取り扱ったかによって、変化する可能性があります。
image_toyo_common_spacer.gif.gif
パス名の大文字/小文字に確実に一貫性を持たせる方法として、サブミット前のトリガがあります。このトリガのサンプルは、Perforce Software社のパブリック・ディポにおいて参照することができます。: http://public.perforce.com/public/perforce/utils/index.html#triggers

image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
大文字/小文字の問題を検出し解決する
image_toyo_common_spacer.gif.gif
大文字/小文字の問題を検出する方法として、p4 verifyを定期的に実行する方法があります。例えば、次のように実行します。:
image_toyo_common_spacer.gif.gif
p4 verify -q //...

image_toyo_common_spacer.gif.gif
p4 verifyは、関連するディポ・ファイルに対して、各リビジョンのメタデータ・エントリをチェックします。UNIXサーバにおいて、ディポ・ファイルの大文字/小文字がメタデータ・エントリと異なることを検出すると、 ディポにない!MISSING!)と出力されます。使用方法の詳細につきましては、PERFORCE コマンド・リファレンスをご参照ください。
image_toyo_common_spacer.gif.gif
もし、ファイル名の大文字/小文字に関して問題をお持ちの方は、どうぞご遠慮なく 弊社テクニカルサポートにお問い合わせください。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
経緯
image_toyo_common_spacer.gif.gif
PERFORCEの以前のリリース(97.2より前)においては、すべてのファイル名、パス名およびデータベース・エントリに対して、サーバがUNIX上で動作していようがWindows上で動作していようが、大文字/小文字の区別を行っていました。例えば、//depot/main/foo.cおよび//depot/MAIN/bar.cは、まったく異なる2つのファイルとして取り扱っていました。ところが、Windows上のPERFORCEサーバに接続しているUNIX上のユーザがいるサイトでは、この仕様によって問題が発生します。つまり、サーバ上のファイルシステムでは大文字/小文字の意識がないため、UNIXユーザによってサブミットされたファイ ルの大文字/小文字を区別できないということです。(もし、Windows上で97.2より前のサーバを動作させている方は、サーバ・プログラムとデータ ベースのアップグレードをお勧め致します。弊社テクニカルサポートへご連絡ください。)
image_toyo_common_spacer.gif.gif
リリース97.3において、UNIXサーバのみが名前の大文字/小文字を区別するようになりました。しかしながら、 UNIX/Windowsの混在環境で開発を行う場合、まだ大文字/小文字に関するいくつかの問題があります。
image_toyo_common_spacer.gif.gif
リリース2000.1において、Windows上のPERFORCEサーバでは、すべてのディポ・ファイルが小文字で格納されるようになりました。この変 更は、もしこの環境をUNIX上へ移行することを考えたとき、その移行をし易くします。つまり、WindowsからUNIXへの移行においては、大文字/ 小文字に関して何も意識する必要はありません。代わりに、異なるプラットフォーム間でPERFORCEサーバを移動したときには、p4 verifyの実行が必須となり、これによって大文字/小文字に関する問題を検出することができます。PERFORCEサーバの移動に関しては、テクニカルノート NOTE010をご参照ください。

 
 
image_toyo_ss_img_all_btn_yellow_bgwhite2.gif.gif戻る

PAGE TOP