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

PERFORCEテクニカルノート002

image_toyo_ss_img_perforce_title_perforce.gif.gif
テクニカルノート002  
image_toyo_ss_img_all_line_yellow.gif.gif
image_toyo_common_spacer.gif.gif
PERFORCEEサーバに接続していない環境での開発手順
image_toyo_common_spacer.gif.gif
PERFORCEサーバに接続していない環境であっても、クライアント・ワークスペース上のファイルに対して開発作業を行うことができます。ただし、PERFORCEサーバの機能を実行することはできません。また、オフラインの間に行った変更作業によって、クライアント・ワークスペース上のファイルはPERFORCEサーバのメタデータと矛盾した状態になります。PERFORCEサーバに再接続したら、オフラインで行った変更を取り入れるため、整合性のチェックを行わなければなりません。
image_toyo_common_spacer.gif.gif
クライアント・ワークスペースにどのファイルがあるかをPERFORCEサーバが認識し、さらにどのファイルが追加/削除/編集目的で作業状態になってい るかを認識しているとき、そのクライアント・ワークスペースは正しく同期されている状態となります。もし、PERFORCEの管理外においてワークスペー スのファイルを作成したり、削除したり、編集したりすると、そのクライアント・ワークスペースは正しく同期されていない状態となります。
こういった状態は、開発の作業をオフライン(例えば電車の中でノートPCを使う)で行った場合や、ファイル管理として PERFORCEが直接動作しない開発環境を用いている場合に、よく発生します。
image_toyo_common_spacer.gif.gif
以下では、PERFORCEの管理外でクライアント・ワークスペース内の情報が変更され、後でそれをチェンジリストとして構築する手順について述べていま す。このチェンジリストは、すなわち当該クライアント・ワークスペースとディポ内のファイルとの差異であり、後にサブミットすることができます。
image_toyo_common_spacer.gif.gif
チェンジリストに盛り込まれる可能性があるワークスペースの変更には、4つのタイプがあます。
image_toyo_common_spacer.gif.gif
  1. 新しいファイルが追加された
  2. ファイルが削除された
  3. ファイルが編集された
  4. ファイルがリネームされた(オプション)

image_toyo_common_spacer.gif.gif
ここでは、使用しているクライアント・ワークスペースの名前を "myclient"、そのクライアント・ルートを "/testclient" (UNIX)または "c:\testclient"(Windows)とします。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
1.まず、新しいファイルを探し、それらを「追加」目的の作業状態にします:
image_toyo_common_spacer.gif.gif
UNIX:
image_toyo_common_spacer.gif.gif
cd /testclient
find . -type f -print | p4 -x - add

image_toyo_common_spacer.gif.gif
この操作では、シンボリックリンクは追加されませんので注意が必要です。詳細は、 テクニカルノート NOTE012をご参照ください。
image_toyo_common_spacer.gif.gif
Windows:
image_toyo_common_spacer.gif.gif
cd c:\testclient
dir /s /b /a-d | p4 -x - add

image_toyo_common_spacer.gif.gif
この操作によって、クライアント・ワークスペースにおける該当パスの全ファイルが、新しいディポ・ファイルとして追加登録されます。既に存在するファイル については "既存のファイルを add できません" というエラー・メッセージが表示されますが、このエラーは無視して構いません。
これにより、クライアント・ワークスペース内に作成されたすべての新しいファイルは、追加目的の作業状態となります。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
2.次に、もはや存在していないファイルを「削除」目的の作業状態にします:
image_toyo_common_spacer.gif.gif
p4 diff -sd //myclient/... | p4 -x - delete

image_toyo_common_spacer.gif.gif
p4 diff -sdを実行すると、対応するクライアント・ワークスペースのファイルが存在しないディポ・ファイルがリストされます。 この操作によって、クライアント・ワークスペースから削除されたすべてのファイルは、削除目的の作業状態となります。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
3.さらに、変更されたファイルを「編集」目的の作業状態にします:
image_toyo_common_spacer.gif.gif
p4 diff -se //myclient/... | p4 -x - edit

image_toyo_common_spacer.gif.gif
p4 diff -seを実行すると、対応するクライアント・ワークスペースのファイルとの間に何らかの差分があるディポ・ファイルがリストされます。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
4.最後にリネームしたファイルがあるかどうかを調べ、もしあればそれらを追加するのか、それとも p4 integrateでブランチするのかを決めます:
image_toyo_common_spacer.gif.gif
オフラインでファイルをリネームすることはお勧めしません。なぜならば、そのファイルがリネームされたのか、それとも単に削除されただけなのか、PERFORCEはそれを直接的に認識する方法がないからです。
PERFORCEのリネーム操作は、削除を伴った反映と いう2つのステップから構成されます。もしオフラインでファイルをリネームすると、上記1.においてリネームされたファイルは新規追加されたファイルとし て認識され、上記2.においてリネームされた古い名前のファイルは削除されたファイルと認識されて削除目的の作業状態になります。
オフラインでリネームされたファイルに対して、上記2.で削除目的の作業状態になるのは正しいのですが、上記1.で追加目的の作業状態になるのはPERFORCEの機能的に正しくありません。リネームされたファイルは追加目的になる(上記1.より)のではなく、古い名前から新しい名前へブランチされるべきです。つまり、新しいファイルを単に追加するのではなく、反映操作によって追加します。そうすることによって、反映操作によって古いファイル名と新しいファイル名との間にリンクが作成され、リネームを通じた変更履歴を保存することができるからです。
image_toyo_common_spacer.gif.gif
もし、新しくリネームされたファイルがチェンジリスト内に現れ、上記1.の結果として追加目的の作業状態になっていたら、それを追加目的から反映目的に変更することができます。しかし、そうするためには、最初にp4 revertの操作を実行しなければなりません。もし、新しくリネームしたファイルの内容に何らかの変更を加えていたならば、その変更は(revertの結果として)失われます。例えば、ファイル "abc.c" を "xyz.c"にリネームしたとします。上記1.~3.の操作を実行した後、予定外の追加操作を以下のようにやり直すことになる場合があります。:

image_toyo_common_spacer.gif.gif
p4 revert xyz.c
p4 integrate add.c xyz.c

image_toyo_common_spacer.gif.gif
繰り返しますが、 "abc.c" から "xyz.c"へリネームした後にファイルの内容を変更した場合は、いったん元に戻す(revert)必要があるため、その内容は失われることになります。これを回避す るためには、元に戻す前のファイルをいったんバックアップしておき、反映目的で作業状態にした反映先ファイルをそのバックアップで上書きします。しかし、この操作はおそらく面倒な操作でしょうし、PERFORCEの管理外で実行しなければなりません。そういう意味から、オフラインでファイルをリネームすることをお勧めしません。どうしてもオフラインでファイルをリ ネームする必要があるときには、むしろブランチするのではなく、単にリネームされたファイルを追加する方が簡単かつ安全なのかもしれません。
image_toyo_common_spacer.gif.gif
以上の操作(1.~4.)を実行すると、作成、削除、変更またはリネームされたファイルを含むチェンジリストが作成されます。チェンジリスト内のファイルが正しいことを確認したら、それをサブミットすることができます。
image_toyo_common_spacer.gif.gif
P4Winを使用している場合、[ファイル]→[拡張]メニューにある[整合性のチェック]を選択することで、最後の2つのdiff手順を実行することができます。
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_btn_yellow_bgwhite2.gif.gif戻る

PAGE TOP