静的解析,構成管理,MISRA-C,コードレビュー,バグトラッキング,リバースエンジニアリング
ソフトウエア開発支援ツール
SOFTWARE SOLUTIONS
ソフトウェア開発における品質の向上、および生産性の向上を目指して、最適な開発支援ツールを提供します。
PERFORCEの製品概要 > 技術情報 > テクニカルノート > テクニカルノート1316
|
||||||||
P4V の保留失敗とデータ損失の可能性 サードパーティ製アプリケーションからの干渉により喪失したワークスペース編集の復元 概要 この記事は、2009.2 および 2010.1 の初期のバージョンにおける P4V の保留機能に関するものです。保留機能を以下に示す 2つの状況下で使用すると、ワークスペースの編集が失われる可能性があります。
これらの保留に関する問題は、P4V の 2009.2/263541 より前の 2009.2、または2010.1/264284 より前の 2010.1 のバージョンにおいてのみ発生します。最新の P4Vビルドをダウンロードするには、PERFORCE ダウンロードページまたは FTPサイトにアクセスしてください。 日本語版 注: この問題が修正された P4V は、日本語版 PERFORCE としては未だリリースされておりません。修正済みの日本語版 P4V がリリースされるまで、恐れ入りますが、今しばらくお待ちください。 詳細 保留後にワークスペースの編集が失われていると思われる これは、保留のデフォルト・オプションによって引き起こされる正常な動作です。default チェンジリストに保留するとき、「チェックアウトされたファイルを保留後に元に戻す」がデフォルトで選択され、その後に元に戻す操作でワークスペースの変更が上書きされるため、ユーザが行った編集が失われているように見えます。ワークスペースの変更は失われる可能性がありますが、保留の対象となったファイルはサーバに正常に転送され、そこに gzip アーカイブとして格納されます。ユーザはファイルを通常どおり保留解除することによって、サーバからファイルを復元し、それらをユーザのワークスペースに戻すことができます。 ワークスペースの編集を復元する ファイルの保留を試み、何らかの理由で保留が失敗して、ファイルを元に戻して変更が失われた場合、データの復元が可能である場合があります。 PERFORCEサーバでは、保留内容の gzip アーカイブは、P4ROOT の depotサブディレクトリの下に、他のすべての RCS およびバイナリ・アーカイブと共に格納されます。保留されたファイルのアーカイブは、ディポ・ファイルのパスに対応するディレクトリに配置されます。例えば、'//depot/foo'というファイルの場合、'<P4ROOT>/depot/foo,d'というディレクトリに保留内容が格納されます。 そのファイルに関連するすべての保留内容は、そのディレクトリの下に配置され、それらと関連する特定の保留チェンジ番号を使って名付けられます。 例えば、チェンジ 2124 で、ファイル'foo'の新しい保留内容が作成されたとします。 $ p4 shelve Change 2124 created with 1 open file(s). Shelving files for change 2124. edit //depot/foo#10 Change 2124 files shelved. サーバのディポの'foo,d'というディレクトリの下を見ると、新たに作成された2124 を含むアクティブな保留内容が確認できます。この保留内容は 1.2124.gzとしてここに格納されています。 $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 <--- この保留内容 保留内容を取得するには、アーカイブをワークスペースにコピーして戻し、unzipすることにより、強制終了された保留内容からの変更を取得します。 $ gunzip 1.2124.gz $ ls 1.2124 $ more 1.2124 Changes from our aborted shelve! 強制終了された保留内容から変更を復元して、ファイルを作業中チェンジリストでチェックアウトするには、以下のように操作します。
こうして、強制終了された保留状態の内容を持つファイルが、当該ワークスペースの作業中チェンジリストにおいてチェックアウトされます。 保留された編集が保留解除後に失われる PERFORCE が制御しているファイルが、他のプロセスによって開かれるときは常に、それらのサードパーティのプロセスが PERFORCE の操作を妨げる可能性があります。例えば、ワークスペース・ファイルに書き込みロックがかけられていると、'p4 sync'の処理でそのファイルの更新に失敗する可能性があります。一般的に、PERFORCEサーバまたはクライアントが予期しないファイルロックに遭遇したときは常に、アプリケーションがエラー状態を検出し、適切なエラー・メッセージを出力して、順当に失敗します。 P4V の 2009.2 および 2010.1 の初期バージョンにおいてファイルを保留解除するとき、ワークスペース・ファイルが別のプロセスで開かれていると、保留内容の削除中に保留解除処理が中止される(失敗する)ことがあります。残念 ながら、この状況ではデータを復元する方法はありません。 この問題への対応策は、PERFORCE が制御しているファイルの保留解除を試みる際、それらのワークスペース・ファイルがサードパーティのプロセスによって開かれている状態にしないことです。この問題は、上述したとおり、P4V を新しいビルドにアップグレードすることによって解決します。(前述の 日本語版 注: をご参照ください。)
|






