更新
ワークベンチ内の 1 つのプロジェクトで作業を行っている間、チームの他のメンバーは、リポジトリー内のそのプロジェクトのコピーに対する変更をコミットすることができます。これらの変更を入手するには、ワークベンチを「更新」して、ブランチの状態を一致させることができます。表示される変更は、ワークベンチ・プロジェクトが共用するよう構成されているブランチ固有のものになります。いつ更新することを選択するかを制御する必要があります。
更新コマンドは 2 つの場所 (「チーム」>「更新」メニュー、または「同期化」ビュー) から出すことができます。これらの 2 つのコマンドの違いを理解するためには、以下の 3 つの異なる種類の着信変更について知ることが重要です。
- 「非競合」変更は、ファイルがリモートで変更されたが、ローカルでは変更されていない場合に発生します。
- 「自動マージ可能競合」変更は、ASCII ファイルがリモートとローカルの両方で変更されている (つまり、非コミット・ローカル変更がある) が、その変更は異なる行に対するものである場合に発生します。
- 「非自動マージ可能競合 」変更は、ASCII ファイルの 1 つまたは複数の同じ行か、またはバイナリー・ファイルが、リモートとローカルの両方で変更されている場合に発生します (バイナリー・ファイルは自動マージ可能になることはありません)。
「チーム」>「更新」を選択すると、ローカル・リソースの内容が、上記の 3 つのタイプすべての着信変更を使用して更新されます。更新の動作は「更新/マージ」設定ページで指定できます。選択項目は以下のとおりです。
- 競合しない変更をすべて更新し、残った競合をプレビュー (デフォルト): 競合しないすべての着信変更が自動的にマージされ、残りのすべての競合が「同期化 (Sync)」ビュー (デフォルト) またはダイアログのいずれかに表示されます。「更新/マージ」設定ページで、競合を表示する場所を指定できます。
- 更新前に追加された変更をすべてプレビュー: すべての変更が「同期化 (Sync)」ビューまたはダイアログのいずれか (設定による) に表示されます。次に、行ごとに各変更をマージしたり、すべての競合しない変更を更新したりでき、その後に残りの競合を処理できます。
- プレビューを行わず、CVS テキスト・マークアップを使用して競合を示す: このオプションは、ユーザー対話なしですべての変更を自動的にマージします。競合する変更は、以下のような CVS テキスト・マークアップを使用してマージされます。
<<<<<<< original file revision
[original code]
= = = = = = =
[incoming code]
>>>>>>> incoming file revision
その後、マージ競合がある各ファイルに移動し、望ましい最終状態になるようにファイルを編集する必要があります。
多くの場合、ローカル・リソースを更新する前に、どんな着信変更があるかを知っておくことが必要です。これらの問題は、「同期化」ビューで指摘されます。
着信モードで「同期化」ビューを開くには、以下のようにします。
- 「ナビゲーション」ビューで、更新したいリソースを選択します。
- 選択されたリソースのポップアップ・メニューから、「チーム」>「リポジトリーと同期化」を選択します。「同期化」ビューが開きます。
- 「同期化」ビューのツールバーで「着信モード」ボタンをクリックして、変更されたワークベンチ・リソース
(発信変更) があれば、それをフィルターに掛けて除外します。
着信モードでは、自分が最後に更新したので、ブランチにコミットした変更を見ることができます。ビューには、それぞれの着信変更のタイプが示されます。異なるタイプの競合を扱うために、「更新」と「上書きおよび更新」という 2
つの更新コマンドがあります (ビュー内の任意のリソースのコンテキスト・メニューから使用可能です)。「同期化」ビューで「更新」コマンドを選択した場合、選択された着信および自動マージ可能の競合変更がすべて処理されるのに対し、自動マージ可能でない競合は更新されません
(正常に処理されたファイルは、すべてビューから除去されます)。「上書きおよび更新」コマンドは競合に対して動作し、ローカル・リソースをリモート・コンテンツで置換します。この「置換」の振る舞いが、望ましいものであることはめったにありません。代替方法について、後で説明します。
非競合および自動マージ可能のファイルを更新するには、以下のようにします。
- 「同期化」ビューの上部にある「構造体の比較」ペインには、着信変更を持つリソースの階層が含まれています。
- すべての競合ファイルを選択し、ポップアップ・メニューから「更新」を選択します。これにより、着信変更または自動マージ可能競合のいずれかである選択されたリソースが更新され、それらのリソースがビューから除去されます。内容が自動マージ可能でない競合はビューに残されます。
ローカルのワークベンチに、ブランチからの着信変更がある、自動マージ可能でない発信変更が含まれている場合は、「上書きおよび更新」を実行する代わりに、以下のように、その違いを手操作でワークベンチにマージすることができます。
- 「構造体の比較」ペインで、リソース・リストに競合 (赤色の矢印で表されます)
があれば、(ダブルクリックするか、またはコンテキスト・メニューから「比較エディターで開く」を選択して)
それを開きます。
- 比較エディターの「テキストの比較」エリアでは、ローカルのワークベンチ・データが左側に表示され、リポジトリー・ブランチ・データが右側に表示されます。この 2 つの間の違いを調べてください。
- テキスト比較エリアを使用して、変更があればマージします。ファイルのリポジトリー改訂からの変更を、ファイルのワークベンチ・コピーにコピーして、マージされたワークベンチ・ファイルを保管することができます
(左のペインにあるポップアップ・メニューを使用します)。
- ローカル・ファイルへのリモート変更のマージが完了したら、「同期化」ビューのポップアップ・メニューから「マージ済みとしてマーク 」を選択します。これにより、ローカル・ファイルは更新済みとしてマークが付けられ、その変更をコミットすることができます。
注: リポジトリーの内容は、更新したときには変更されません。着信変更を受け入れると、これらの変更がワークベンチに適用されます。リポジトリーは、発信変更をコミットした場合にのみ変更できます。
ヒント: 「同期化」ビューで、1 組の着信変更の祖先を選択すると、その操作がすべての該当する子で実行されます。例えば、最上位のフォルダーを選択して「更新」を選択すると、着信および自動マージ可能の競合変更がすべて処理され、その他の着信変更は処理されないまま残されます。
重要: 上記で説明した「上書きおよび更新」コマンドの振る舞いは、「同期化」ビューの着信モードにのみ適用されます。このビューの「着信/発信モード」では、着信変更と競合の振る舞いは同じですが、このコマンドは、発信変更をリポジトリーの内容に戻してしまいます。このコマンドを着信/発信モードで実行するときは、十分に注意してください。

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

コミット
競合の解決
リソースの比較
バージョン管理ライフ・サイクル: リソースの追加および無視
CVS
「同期化」ビュー