製品情報
技術情報
  簡単に使ってみましょう(Windows)
  簡単に使ってみましょう(UNIX)
  よくある質問 (FAQ)
  テクニカルノート
  製品比較
  用語集
  ネットワーク上でのソフトウェア開発
  インターファイル・ブランチング
  ソフトウェア構成管理の
高度な実践方法・・・
  変更管理を通じた製品品質の向上
  PERFORCE−SOFTUNE
連携運用ガイド (Rev1.02)[PDF]
ライセンス情報
テクニカルサポート
ソフトウェア ダウンロード
マニュアル ダウンロード









 
テクニカルノート002 HOME製品PERFORCE 技術情報ノート


PERFORCEEサーバに接続していない環境での開発手順


PERFORCEサーバに接続していない環境であっても、クライアント・ワークスペース上のファイルに対して開発作業を行うことができます。ただし、PERFORCEサーバの機能を実行することはできません。また、オフラインの間に行った変更作業によって、クライアント・ワークスペース上のファイルはPERFORCEサーバのメタデータと矛盾した状態になります。PERFORCEサーバに再接続したら、オフラインで行った変更を取り入れるため、整合性のチェックを行わなければなりません。

クライアント・ワークスペースにどのファイルがあるかをPERFORCEサーバが認識し、さらにどのファイルが追加/削除/編集目的で作業状態になっているかを認識しているとき、そのクライアント・ワークスペースは正しく同期されている状態となります。もし、PERFORCEの管理外においてワークスペースのファイルを作成したり、削除したり、編集したりすると、そのクライアント・ワークスペースは正しく同期されていない状態となります。
こういった状態は、開発の作業をオフライン(例えば電車の中でノートPCを使う)で行った場合や、ファイル管理としてPERFORCEが直接動作しない開発環境を用いている場合に、よく発生します。

以下では、PERFORCEの管理外でクライアント・ワークスペース内の情報が変更され、後でそれをチェンジリストとして構築する手順について述べています。このチェンジリストは、すなわち当該クライアント・ワークスペースとディポ内のファイルとの差異であり、後にサブミットすることができます。

チェンジリストに盛り込まれる可能性があるワークスペースの変更には、4つのタイプがあます。
  1. 新しいファイルが追加された
  2. ファイルが削除された
  3. ファイルが編集された
  4. ファイルがリネームされた(オプション)
ここでは、使用しているクライアント・ワークスペースの名前を "myclient"、そのクライアント・ルートを "/testclient"(UNIX)または "c:\testclient"(Windows)とします。


1.まず、新しいファイルを探し、それらを「追加」目的の作業状態にします:

UNIX:
cd /testclient
find . -type f -print | p4 -x - add
この操作では、シンボリックリンクは追加されませんので注意が必要です。詳細は、 テクニカルノート NOTE012をご参照ください。

Windows:
cd c:\testclient
dir /s /b /a-d | p4 -x - add
この操作によって、クライアント・ワークスペースにおける該当パスの全ファイルが、新しいディポ・ファイルとして追加登録されます。既に存在するファイルについては "既存のファイルを add できません" というエラー・メッセージが表示されますが、このエラーは無視して構いません。
これにより、クライアント・ワークスペース内に作成されたすべての新しいファイルは、追加目的の作業状態となります。


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


3.さらに、変更されたファイルを「編集」目的の作業状態にします:
p4 diff -se //myclient/... | p4 -x - edit
p4 diff -seを実行すると、対応するクライアント・ワークスペースのファイルとの間に何らかの差分があるディポ・ファイルがリストされます。


4.最後にリネームしたファイルがあるかどうかを調べ、もしあればそれらを追加するのか、それとも p4 integrateでブランチするのかを決めます:

オフラインでファイルをリネームすることはお勧めしません。なぜならば、そのファイルがリネームされたのか、それとも単に削除されただけなのか、PERFORCEはそれを直接的に認識する方法がないからです。
PERFORCEのリネーム操作は、削除を伴った反映という2つのステップから構成されます。もしオフラインでファイルをリネームすると、上記1.においてリネームされたファイルは新規追加されたファイルとして認識され、上記2.においてリネームされた古い名前のファイルは削除されたファイルと認識されて削除目的の作業状態になります。
オフラインでリネームされたファイルに対して、上記2.で削除目的の作業状態になるのは正しいのですが、上記1.で追加目的の作業状態になるのはPERFORCEの機能的に正しくありません。リネームされたファイルは追加目的になる(上記1.より)のではなく、古い名前から新しい名前へブランチされるべきです。つまり、新しいファイルを単に追加するのではなく、反映操作によって追加します。そうすることによって、反映操作によって古いファイル名と新しいファイル名との間にリンクが作成され、リネームを通じた変更履歴を保存することができるからです。

もし、新しくリネームされたファイルがチェンジリスト内に現れ、上記1.の結果として追加目的の作業状態になっていたら、それを追加目的から反映目的に変更することができます。しかし、そうするためには、最初にp4 revertの操作を実行しなければなりません。もし、新しくリネームしたファイルの内容に何らかの変更を加えていたならば、その変更は(revertの結果として)失われます。例えば、ファイル "abc.c" を "xyz.c" にリネームしたとします。上記1.〜3.の操作を実行した後、予定外の追加操作を以下のようにやり直すことになる場合があります。:
p4 revert xyz.c
p4 integrate add.c xyz.c
繰り返しますが、 "abc.c" から "xyz.c" へリネームした後にファイルの内容を変更した場合は、いったん元に戻す(revert)必要があるため、その内容は失われることになります。これを回避するためには、元に戻す前のファイルをいったんバックアップしておき、反映目的で作業状態にした反映先ファイルをそのバックアップで上書きします。しかし、この操作はおそらく面倒な操作でしょうし、PERFORCE の管理外で実行しなければなりません。そういう意味から、オフラインでファイルをリネームすることをお勧めしません。どうしてもオフラインでファイルをリネームする必要があるときには、むしろブランチするのではなく、単にリネームされたファイルを追加する方が簡単かつ安全なのかもしれません。

以上の操作(1.〜4.)を実行すると、作成、削除、変更またはリネームされたファイルを含むチェンジリストが作成されます。チェンジリスト内のファイルが正しいことを確認したら、それをサブミットすることができます。

P4Winを使用している場合、[ファイル]→[拡張]メニューにある[整合性のチェック]を選択することで、最後の2つのdiff手順を実行することができます。



戻る