ファイルの衝突解決
ファイルを既存のコードラインにマージしようとするとき、またはファイルをチェックアウトさせるときに別のユーザが編集やサブミットをしたファイルが含まれているチェンジリストをサブミットした場合に衝突が発生します。衝突が発生すると、Helixサーバにより、ファイルの衝突の解決がスケジュール設定されます。衝突を解決してから、衝突しているファイルを含むチェンジリストをサブミットする必要があります。P4Vでは、解決する必要のあるファイルがクエスチョンマークのバッジ 付きで表示されます。
衝突を解決する必要のあるファイルを含むチェンジリストをサブミットしようとすると、サブミットチェンジリストフォームに指示が表示され、サブミットボタンは灰色表示になります。ダイアログに[古い日付]と表示され、ファイルに黄色い三角形のバッジが付いて表示された場合は、そのファイルを右クリックして[最新リビジョンを取得]を選択し、ファイルの最新リビジョンを取得します。この操作では、ワークスペースにあるファイルのコピーは上書きされません。最新のリビジョンを取得後、ファイルの衝突を解決できます。ファイルの衝突は、個別に、または複数のファイルを1度に解決することができます。
解決できる衝突の原因は、内容の変更、ファイルタイプの変更、属性の変更、移動、削除およびブランチングです。
個別のファイルの衝突を解決する
個別のファイルの衝突を解決する手順は次のとおりです。
-
目的のファイルを右クリックして[衝突解決]を選択します。
デフォルトでは、[衝突解決]ダイアログが対話式モードで開きます。
-
ファイルに複数の解決タイプが必要な場合(例えば、ファイルをチェックアウトした後に別のユーザが内容とファイルタイプの両方の変更をチェックインしていた場合など)、[複数のファイルを自動解決]を選択できますが、デフォルトは[ファイルを1つずつ対話式で衝突解決する]です。この場合、衝突解決の各タイプは[衝突を解決するファイル]リストで別々の行で一覧表示されます。
P4Vは、選択されたファイルの差分と衝突に基づき、ファイルと衝突解決タイプの組み合わごとに推奨アクションを表示します。この推奨の後には、説明が続いて表示されます。オプションのアクションボタンは、青色で強調表示されます。
-
デフォルトで、P4Vでは、行末と空白の違いが認識されます。P4Vで行末と空白を無視する場合は、行末と空白に関するオプションのリストで、以下に示すいずれかのオプションを選択します。
- 行末の相違を無視: このオプションを選択すると、行末規則の相違が無視されます。
- 行末および空白の長さの相違を無視: このオプションを選択すると、空白文字の相違だけが無視されます(例えば、タブ文字を8つの空白文字に置き換えた場合など)。
- 行末およびすべての空白の相違を無視: このオプションを選択すると、空白文字が完全に無視されます(例えば、タブ文字などの空白文字を削除した場合など)。
ファイル間の相違が空白文字だけの場合に、上記のいずれかのオプションを選択すると、P4Vは、ワークスペースファイル内のテキストを使用してファイル間の相違を解決します。
-
(オプション)衝突解決されるファイルについての詳細情報は、[追加アクション]のリストからオプションを選択してください。
-
内容の衝突を解決するときにバイナリーファイルをテキストとしてマージするかを選択します。
このオプションを選択すると、P4Vはバイナリーファイルをテキストファイルと同様に処理し、ソースファイルとターゲットファイル間でテキストのマージを実行します。
-
推奨されるアクション(青色で強調表示)に従って実行するか、別の衝突解決オプションを選択します。
- 反映元を承諾: ワークスペースのファイルのコピーがディポのバージョンに置換され、自分が行った変更内容は破棄されます。
- 反映先を承諾: ワークスペースのファイルが承諾され、ファイルのサブミット時にディポのバージョンが上書きされます。
- マージ結果を承諾: ワークスペースのファイルが、画面上部の枠内に表示されている2つのファイルのマージ結果に置換されます。
-
マージツールを実行: マージツールを開いてファイルを編集し、マージの結果を保存します(P4Mergeはデフォルトのマージツールですが、P4Vプリファレンスで別のツールを選択することもできます)。
各ファイルの衝突が解決されると、[衝突を解決するファイル]のリストから削除されます。
- 変更をチェックインするには、衝突を解決したファイルを含むチェンジリストをサブミットします。
複数のファイルの衝突を解決する
複数のファイルの衝突を1度に自動で解決する手順は、以下のとおりです。
-
目的のファイルを選択して右クリックし、[衝突解決]を選択します。[衝突解決]ダイアログが表示されます。
-
[複数のファイルを自動解決]を選択します。
[衝突解決]ダイアログに[衝突を解決するファイル]が表示されます。ファイルの衝突が解決されると、このリストから削除されます。
ファイルの衝突の自動解決を特定の解決タイプまたはファイルタイプに制限するには、選択ドロップダウンリストからタイプを選択します。これは、さまざまな衝突解決タイプで別々の自動解決アクションが必要な場合や、自分で対話式に衝突解決をする必要のある解決やファイルタイプに便利です。例えば、衝突を解決するファイルのリストにバイナリーファイルとテキストファイルの両方が含まれている場合、自動解決するテキストファイルを選択し、バイナリーファイルは対話式に解決する必要があります。
ダイアログには、選択した行の番号がリストのすぐ上に表示されます。
-
デフォルトで、P4Vでは、行末と空白の違いが認識されます。P4Vで行末と空白を無視する場合は、行末と空白に関するオプションのリストで、以下に示すいずれかのオプションを選択します。
- 行末の相違を無視: このオプションを選択すると、行末規則の相違が無視されます。
- 行末および空白の長さの相違を無視: このオプションを選択すると、空白文字の相違だけが無視されます(例えば、タブ文字を8つの空白文字に置き換えた場合など)。
- 行末およびすべての空白の相違を無視: このオプションを選択すると、空白文字が完全に無視されます(例えば、タブ文字などの空白文字を削除した場合など)。
ファイル間の相違が空白文字だけの場合に、上記のいずれかのオプションを選択すると、P4Vは、ワークスペースファイル内のテキストを使用してファイル間の相違を解決します。
-
内容の衝突を解決するときにバイナリーファイルをテキストとしてマージするかを選択します。
このオプションを選択すると、P4Vはバイナリーファイルをテキストファイルと同様に処理し、ソースファイルとターゲットファイル間でテキストのマージを実行します。
-
衝突解決方法を選択します。
- 安全な自動衝突解決(マージなし): ソースファイル(ディポ内のファイル)に変更だけが含まれている場合に、ソースファイルが許可されます。対象ファイル(ワークスペースのファイル)に唯一の変更がある場合、対象ファイルを承諾します。ソースファイルと対象ファイルの両方が変更されている場合、衝突は解決されません。
- 自動衝突解決(マージ許可): ソースファイルに変更が1つだけ含まれている場合、そのソースファイルを受け入れます。対象ファイルに唯一の変更がある場合、対象ファイルを承諾します。マージは、ソースファイルと対象ファイルの両方に変更があり、衝突がない場合に変更します。
- 反映元を承諾: ワークスペースのファイルのコピーがディポのバージョンに置換され、自分が行った変更内容は破棄されます。
- 反映先を承諾: ワークスペースのファイルが承諾され、ファイルのサブミット時にディポのバージョンが上書きされます。
- 自動衝突解決(衝突がある場合マージ許可): ソースファイルに変更が1つだけ含まれている場合、そのソースファイルを受け入れます。対象ファイルに唯一の変更がある場合、対象ファイルを承諾します。ソースファイルと対象ファイルの両方に変更がある場合、衝突があってもマージ済みファイルを作成します。衝突がある場合、衝突を示すテキスト表記には両方のバージョンが含まれます。
- (オプション)[自動処理のデフォルトとして設定]を選択して、自分の選択を複数ファイルの自動衝突解決のデフォルトにします。
-
[自動衝突解決]をクリックします。
衝突が存在する状態でマージを許可しない自動衝突解決オプションを選択した場合、衝突が検出されると、ファイルの衝突を対話式に1つずつ解決するように推奨するプロンプトがP4Vによって表示されます。
- (オプション)複数の衝突解決タイプを個別に自動で衝突解決している場合、繰り返します。
- 変更をチェックインするには、衝突を解決したファイルを含むチェンジリストをサブミットします。
複数のファイルを1度に衝突解決する手順は、以下のとおりです(衝突がある場合に推奨します)。
- [ファイルを1つずつ対話式で衝突解決する]を選択します。
- 個別のファイルの衝突を解決するに説明されている手順を行います。