更新

ワークベンチ内の 1 つのプロジェクトで作業を行っている間、チームの他のメンバーは、リポジトリー内のそのプロジェクトのコピーに対する変更をコミットすることができます。 これらの変更を入手するには、ワークベンチを「更新」して、ブランチの状態を一致させることができます。 表示される変更は、ワークベンチ・プロジェクトが共用するよう構成されているブランチ固有のものになります。 いつ更新することを選択するかを制御する必要があります。

更新コマンドは 2 つの場所 (「チーム」>「更新」メニュー、または「同期化」ビュー) から出すことができます。 これらの 2 つのコマンドの違いを理解するためには、以下の 3 つの異なる種類の着信変更について知ることが重要です。

「チーム」>「更新」を選択すると、ローカル・リソースの内容が、上記の 3 つのタイプすべての着信変更を使用して更新されます。 非競合および自動マージ可能競合の場合、追加のアクションは必要ありません (自動マージ可能競合では、ユーザーが自動マージを希望しない場合に備えて、変更されたローカル・リソースが ".#" という接頭部のファイルに移動されます)。 ただし、非自動マージ可能競合では、競合は、特別の CVS 固有のマークアップ・テキストを使用してローカル・リソースとマージされるか (ASCII ファイルの場合)、または ".#" という接頭部のファイルに移動されます (バイナリー・ファイルの場合)。 これは、CVS のコマンド行の動作と一致しますが、Eclipse の自動ビルド・メカニズムと組み合わせた場合に問題となる可能性があります。 また、ローカル・リソースを更新する前に、どんな着信変更があるかを知りたいことはあまりありません。 これらの問題は、「同期化」ビューで指摘されます。

着信モードで「同期化」ビューを開くには、以下のようにします。

  1. 「ナビゲーター」ビューで、更新したいリソースを選択します。
  2. 選択されたリソースのポップアップ・メニューから、「チーム」>「リポジトリーとの同期化」を選択します。 「同期化」ビューが開きます。
  3. 「同期化」ビューのツールバーで「着信モード」ボタンをクリックして、変更されたワークベンチ・リソース (発信変更) があれば、それをフィルターに掛けて除外します。

着信モードでは、自分が最後に更新したので、ブランチにコミットした変更を見ることができます。 ビューには、それぞれの着信変更のタイプ (非競合、自動マージ可能競合、または非自動マージ可能競合) が示されます。 異なるタイプの競合を扱うために、「リポジトリーから更新」と「オーバーライドおよび更新」という 2 つの更新コマンドがあります (ビュー内の任意のリソースのコンテキスト・メニューから使用可能です)。 「同期化」ビューで「リポジトリーから更新」を選択した場合、非競合変更だけが処理され、自動マージ可能競合または非自動マージ可能競合のファイルはビュー内にそのまま残されます (正常に処理されたファイルは、すべてビューから除去されます)。 「オーバーライドおよび更新」コマンドは、2 つのタイプの競合を操作します。 このコマンドを選択した後、マージが試行される前にプロンプトが出され、内容を自動マージしたいか、それともリポジトリー・ファイルで上書きするかどうかが尋ねられます。 自動マージを選択すると、自動マージ可能競合だけが処理され、着信変更がローカル変更と自動的にマージされます。 そうでない場合は、すべての競合が処理され、ローカル・リソースがリモートの内容で置き換えられます。 「置換」の動作が希望されることはめったにありません。 代替方法について、後で説明します。

非競合および自動マージ可能のファイルを更新するには、以下のようにします。

  1. 「同期化」ビューの上部にある「構造体の比較」ペインには、着信変更を持つリソースの階層が含まれています。
  2. 非競合ファイルを選択し、ポップアップ・メニューから「リポジトリーから更新」を選択します。 これにより、選択されたリソースが更新され、それらのリソースがビューから除去されます。
  3. 自動マージ可能競合を選択し、ポップアップ・メニューから「オーバーライドおよび更新」を選択します。 自動マージ可能リソースのみを更新するよう選択し、プロンプトが出されたら「OK」をクリックします。 これにより、選択されたリソースが更新され、それらのリソースがビューから除去されます。

ローカルのワークベンチに、ブランチからの着信変更がある、自動マージ可能でない発信変更が含まれている場合は、「オーバーライドおよび更新」を実行する代わりに、以下のように、その違いを手操作でワークベンチにマージすることができます。

  1. 「構造体の比較」ペインで、リソース・リストに競合 (赤色の矢印で表されます) があれば、それを選択します。
  2. 「同期化」ビューの「テキスト比較」エリアでは、ローカルのワークベンチ・データが左側に表示され、リポジトリー・ブランチ・データが右側に表示されます。 この 2 つの間の違いを調べてください。
  3. テキスト比較エリアを使用して、変更があればマージします。 ファイルのリポジトリー改訂からの変更を、ファイルのワークベンチ・コピーにコピーして、 マージされたワークベンチ・ファイルを保管することができます (左のペインにあるポップアップ・メニューを使用します)。
  4. リモートの変更をローカル・ファイルにマージしたら、ポップアップ・メニューから「マージ済みとしてマーク」を選択します。 これにより、ローカル・ファイルは更新済みとしてマークが付けられ、その変更をコミットすることができます。

注: リポジトリーの内容は、更新したときには変更されません。 着信変更を受け入れると、これらの変更がワークベンチに適用されます。 リポジトリーは、発信変更をコミットした場合にのみ変更できます。

ヒント: 「構造体の比較」ペインで、1 組の着信変更の祖先を選択すると、その操作がすべての該当する子で実行されます。 例えば、最上位のフォルダーを選択して「リポジトリーから更新」を選択すると、すべての非競合の着信変更が処理され、その他の着信変更は処理されないまま残されます。

重要: 上記で説明した「オーバーライドおよび更新」コマンドの動作は、「同期化」ビューの着信モードにのみ適用されます。 ビューの「着信 / 発信モード」では、着信変更と競合の動作は同じですが、このコマンドは、発信変更をリポジトリーの内容に戻してしまいます。 このコマンドを発信 / 着信モードで実行するときは、十分に注意してください。

関連概念
CVS によるチーム・プログラミング
CVS リポジトリーとの同期化化

関連タスク
コミット
競合の解決
リソースの比較
バージョン管理ライフ・サイクル: リソースの追加および無視

関連参照
CVS
「同期化」ビュー

 
Copyright IBM Corporation and others 2000, 2003