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

PERFORCEテクニカルノート1316

image_toyo_ss_img_perforce_title_perforce.gif.gif
テクニカルノート1316  
image_toyo_ss_img_all_line_yellow.gif.gif
image_toyo_common_spacer.gif.gif
P4V の保留失敗とデータ損失の可能性
image_toyo_common_spacer.gif.gif
サードパーティ製アプリケーションからの干渉により喪失したワークスペース編集の復元
image_toyo_common_spacer.gif.gif
概要
image_toyo_common_spacer.gif.gif
この記事は、2009.2 および 2010.1 の初期のバージョンにおける P4V の保留機能に関するものです。保留機能を以下に示す 2つの状況下で使用すると、ワークスペースの編集が失われる可能性があります。
image_toyo_common_spacer.gif.gif
編集のみ、または追加と編集の両方を含む変更を保留すると、エラーが報告されて保留が失敗することがあります。この現象は、デフォルトのオプションである「保留後にファイルを元に戻す」が選択されている場合に起こります。追加内容は正常に保留されますが、編集内容は保留されずに元に戻されて再オープンされ、保留することを意図していた変更が失われることになります。
多くの場合、失われたクライアント側データ、は PERFORCE 管理者が P4ROOTアーカイブ(サーバ上のディポ・ファイル)から復元できます。この状況は、ワークスペース・ファイルが外部プロセスによりロックされている場合、または保留する前にファイルのパーミッションが変更された場合に起こることがあります。
ワークスペース・ファイルが別のプロセスによってロックされている場合にファイルの保留を解除すると(「保留されたファイルを保留解除後に削除する」オプションが選択されているとき)、保留解除は失敗しますが、保留されたファイル内容が削除されます。
image_toyo_common_spacer.gif.gif
これらの保留に関する問題は、P4V の 2009.2/263541 より前の 2009.2、または2010.1/264284 より前の 2010.1 のバージョンにおいてのみ発生します。最新の P4Vビルドをダウンロードするには、PERFORCE ダウンロードページまたは FTPサイトにアクセスしてください。
image_toyo_common_spacer.gif.gif
日本語版 注: この問題が修正された P4V は、日本語版 PERFORCE としては未だリリースされておりません。修正済みの日本語版 P4V がリリースされるまで、恐れ入りますが、今しばらくお待ちください。
image_toyo_common_spacer.gif.gif
image_toyo_common_spacer.gif.gif
詳細
image_toyo_common_spacer.gif.gif
保留後にワークスペースの編集が失われていると思われる
image_toyo_common_spacer.gif.gif
これは、保留のデフォルト・オプションによって引き起こされる正常な動作です。default チェンジリストに保留するとき、「チェックアウトされたファイルを保留後に元に戻す」がデフォルトで選択され、その後に元に戻す操作でワークスペースの変更が上書きされるため、ユーザが行った編集が失われているように見えます。ワークスペースの変更は失われる可能性がありますが、保留の対象となったファイルはサーバに正常に転送され、そこに gzip アーカイブとして格納されます。ユーザはファイルを通常どおり保留解除することによって、サーバからファイルを復元し、それらをユーザのワークスペースに戻すことができます。
image_toyo_common_spacer.gif.gif
image_toyo_common_spacer.gif.gif
ワークスペースの編集を復元する
image_toyo_common_spacer.gif.gif
ファイルの保留を試み、何らかの理由で保留が失敗して、ファイルを元に戻して変更が失われた場合、データの復元が可能である場合があります。
image_toyo_common_spacer.gif.gif
PERFORCEサーバでは、保留内容の gzip アーカイブは、P4ROOT の depotサブディレクトリの下に、他のすべての RCS およびバイナリ・アーカイブと共に格納されます。保留されたファイルのアーカイブは、ディポ・ファイルのパスに対応するディレクトリに配置されます。例えば、'//depot/foo'というファイルの場合、'<P4ROOT>/depot/foo,d'というディレクトリに保留内容が格納されます。
そのファイルに関連するすべての保留内容は、そのディレクトリの下に配置され、それらと関連する特定の保留チェンジ番号を使って名付けられます。
image_toyo_common_spacer.gif.gif
例えば、チェンジ 2124 で、ファイル'foo'の新しい保留内容が作成されたとします。
image_toyo_common_spacer.gif.gif
	$ p4 shelve
	Change 2124 created with 1 open file(s).
	Shelving files for change 2124.
	edit //depot/foo#10
	Change 2124 files shelved.
image_toyo_common_spacer.gif.gif
サーバのディポの'foo,d'というディレクトリの下を見ると、新たに作成された2124 を含むアクティブな保留内容が確認できます。この保留内容は 1.2124.gzとしてここに格納されています。
image_toyo_common_spacer.gif.gif
	$p4 :/usr/local/perforce/P4ROOT/depot/foo,d$ ls -ll
	total 24
	-rw-r--r-- 1 root root 37 2010-08-26 08:14 1.2107.gz
	-rw-r--r-- 1 root root 39 2010-08-26 08:18 1.2108.gz
	-rw-r--r-- 1 root root 37 2010-08-26 08:21 1.2109.gz
	-rw-r--r-- 1 root root 37 2010-08-26 08:24 1.2112.gz
	-rw-r--r-- 1 root root 37 2010-08-26 08:24 1.2113.gz
	-rw-r--r-- 1 root root 37 2010-09-01 12:25 1.2124.gz  <--- この保留内容
image_toyo_common_spacer.gif.gif
保留内容を取得するには、アーカイブをワークスペースにコピーして戻し、unzipすることにより、強制終了された保留内容からの変更を取得します。
image_toyo_common_spacer.gif.gif
	$ gunzip 1.2124.gz 
	
	$ ls
	1.2124
	
	$ more 1.2124 
	
	Changes from our aborted shelve!
image_toyo_common_spacer.gif.gif
強制終了された保留内容から変更を復元して、ファイルを作業中チェンジリストでチェックアウトするには、以下のように操作します。
image_toyo_common_spacer.gif.gif
  1. 影響を受けたファイルをチェックアウトします。
  2. 強制終了された保留内容の gzip アーカイブのコピーを取得し、unzip します。
  3. 保留内容のアーカイブからのバージョンを、ワークスペース内のバージョンへとコピーします。
image_toyo_common_spacer.gif.gif
こうして、強制終了された保留状態の内容を持つファイルが、当該ワークスペースの作業中チェンジリストにおいてチェックアウトされます。
image_toyo_common_spacer.gif.gif
image_toyo_common_spacer.gif.gif
保留された編集が保留解除後に失われる
image_toyo_common_spacer.gif.gif
PERFORCE が制御しているファイルが、他のプロセスによって開かれるときは常に、それらのサードパーティのプロセスが PERFORCE の操作を妨げる可能性があります。例えば、ワークスペース・ファイルに書き込みロックがかけられていると、'p4 sync'の処理でそのファイルの更新に失敗する可能性があります。一般的に、PERFORCEサーバまたはクライアントが予期しないファイルロックに遭遇したときは常に、アプリケーションがエラー状態を検出し、適切なエラー・メッセージを出力して、順当に失敗します。
image_toyo_common_spacer.gif.gif
P4V の 2009.2 および 2010.1 の初期バージョンにおいてファイルを保留解除するとき、ワークスペース・ファイルが別のプロセスで開かれていると、保留内容の削除中に保留解除処理が中止される(失敗する)ことがあります。残念ながら、この状況ではデータを復元する方法はありません。
image_toyo_common_spacer.gif.gif
この問題への対応策は、PERFORCE が制御しているファイルの保留解除を試みる際、それらのワークスペース・ファイルがサードパーティのプロセスによって開かれている状態にしないことです。この問題は、上述したとおり、P4V を新しいビルドにアップグレードすることによって解決します。(前述の 日本語版 注: をご参照ください。)
image_toyo_common_spacer.gif.gif
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_btn_yellow_bgwhite2.gif.gif戻る

PAGE TOP