ファイルの相違点と競合の種類の理解
更新 : 2007 年 11 月
複数の人が同じプロジェクトで作業しているソフトウェア開発チームでは、ファイルの相違点に起因して競合が発生することがよくあります。Team Foundation バージョン管理を使用すると、これらの競合を解決できます。競合は、次の操作中に発生する可能性があります。
分岐間での変更のマージ
ワークスペースへのファイルの取得
ファイルの新しいバージョンのチェックイン
競合の種類
ここでは、次の競合の種類について説明します。
バージョンの競合
ファイル名衝突の競合
ローカル上書きの競合
バージョンの競合
バージョンの競合は、チェックイン、取得、またはマージ操作時に Team Foundation バージョン管理で発生する可能性があります。いずれの場合も、分岐パスに従って項目を作成していくことが、結果として競合を発生させることになります。
チェックイン 2 人のユーザーが、ファイルの最新バージョンをチェックアウトします。最初のユーザーが変更をチェックインし、これにより、ファイルの新しいバージョンが作成されます。2 人目のユーザーがチェックインしようとすると、2 人目のユーザーが行った変更はファイルの最新バージョンに対して行ったものではないためにバージョンの競合が発生します。
取得 2 人のユーザーが、ファイルの最新バージョンをチェックアウトします。最初のユーザーが変更をチェックインし、これにより、ファイルの新しいバージョンが作成されます。2 人目のユーザーが最新バージョンの取得操作を実行すると、最新バージョンの取得操作によりワークスペース内のチェックアウトされたファイルの更新が試みられるため、バージョンの競合が発生します。
マージ 分岐しているファイルが、両方の分岐で変更されています。ユーザーが、一方の分岐からもう一方の分岐に変更をマージしようとします。ファイルが両方の分岐で変更されたため、バージョンの競合が発生します。
バージョンの競合を解決するには、変更をマージしたり、他のバージョンとの間で 1 つの変更セットを選択したりすることが必要です。詳細については、「方法 : 2 つのファイルの競合を解決する」を参照してください。
バージョンの競合
ローカル/ソースの変更 |
サーバー/ターゲットの変更 |
解決オプション (取得またはチェックイン) |
解決オプション (マージ) |
---|---|---|---|
編集 名前の変更 削除取り消し |
編集 名前の変更 削除取り消し |
[変更をマージ] (競合がない場合) [マージ ツールで変更をマージ] [ローカルの変更を元に戻す] [サーバーの変更を破棄] |
[変更をマージ] (競合がない場合) [マージ ツールで変更をマージ] [ターゲット分岐の変更を保持] [項目をソース分岐からコピー] これは、既定の選択です。 |
|
削除 |
[ファイルを復元して、変更をマージ] (競合がない場合) [ファイルを復元して、マージ ツールで変更をマージ] [ローカルの変更を元に戻す] [ファイルを復元して、ローカルの変更を保持] |
[ファイルを復元して、変更をマージ] (競合がない場合) [ファイルを復元して、マージ ツールで変更をマージ] [ソース分岐からの変更を破棄] [項目をソース分岐からコピー] |
削除 |
編集 名前の変更 削除取り消し |
[ローカルの変更を元に戻す] [サーバーの変更を破棄] |
[ソース分岐からの変更を破棄] [ターゲット分岐の項目を破棄] |
|
削除 |
[ローカルの変更を元に戻す] |
[ソース分岐からの変更を破棄] |
|
|
|
[競合を無視] (その種類の競合に影響しないことを示しています) |
ファイル名衝突の競合
ファイル名衝突の競合は、チェックイン、取得、またはマージ操作時に Team Foundation バージョン管理で発生する可能性があります。3 つのどの場合でも、2 つ以上の項目がソース管理サーバーの同じパスを占有しようとすると競合が発生します。
チェックイン 2 人のユーザーが、それぞれ、同じアプリケーションに 1 つのファイルを追加します。偶然にも、2 人のユーザーは新しいファイルに対して同じファイル名を選択します。1 人のユーザーがファイルをチェックインします。2 人目のユーザーがチェックインを試みると、ファイル名の衝突が発生します。
取得 2 人のユーザーが、1 つのアプリケーションに同じ名前のファイルを追加します。1 人のユーザーがファイルをチェックインします。2 人目のユーザーが最新バージョンの取得操作を試みると、ファイル名の衝突が発生します。これは、2 人目のユーザーがファイルを追加した場所で、最初のユーザーのファイルを取得できないためです。
マージ アプリケーションが分岐された結果、両方の分岐に操作が行われました。どちらの分岐にも、同じ名前のファイルが追加されました。ユーザーが、一方の分岐からもう一方の分岐に変更をマージしようとします。マージ先の分岐にファイルが既に追加されている場合は、マージ元の分岐に追加されたファイルを分岐できないため、ファイル名の衝突が発生します。
ファイル名の衝突は、追加、名前変更、分岐、削除の取り消し、およびマージなど、サーバー パスの名前空間に項目を追加または移動するあらゆる操作の結果として発生する可能性があります。
ファイル名の衝突を解決するには、最終的にソース管理サーバーのパスを占有する項目を選択する必要があります。詳細については、「方法 : 2 つのファイルの競合を解決する」を参照してください。
ファイル名衝突の競合
ローカル/ソースの変更 |
サーバー/ターゲットの変更 |
解決オプション (取得またはチェックイン) |
解決オプション (マージ) |
---|---|---|---|
追加 分岐 名前の変更 削除取り消し |
追加 分岐 名前の変更 削除取り消し |
[ローカルの変更を元に戻す] [競合を無視] |
[ソース分岐からの変更を破棄] [競合を無視] |
|
|
|
[競合を無視] (その種類の競合に影響しないことを示しています)。これは、既定の設定です。 |
ローカル上書きの競合
ローカル上書きの競合は、取得操作時のみ Team Foundation バージョン管理で発生します。これらの競合は、取得操作によりワークスペース内の書き込み可能なファイルへの書き込みが試みられた場合に発生します。既定では、読み取り専用のファイルだけが取得操作により置き換えられます。ローカル上書きの競合を解決するには、ファイルを上書きするか、ファイルをチェックアウトして変更をマージする必要があります。
書き込み可能なファイル
ローカル/ソースの変更 |
サーバー/ターゲットの変更 |
解決オプション (取得またはチェックイン) |
解決オプション (マージ) |
---|---|---|---|
該当なし |
該当なし |
[ローカル ファイル/フォルダを上書き] [競合を無視] |
該当なし |
|
|
|
[競合を無視] (その種類の競合に影響しないことを示しています) これは、既定の設定です。 |
メモ : |
---|
解決するためにマージ ツールが必要なバージョンの競合は、[選択された競合の解決] ダイアログ ボックスでは解決できません。このダイアログ ボックスには、マージ ツールで変更をマージするオプションが含まれています。また、[変更をマージ] を選択した場合で、内部の内容の競合が存在する場合は、マージ ツールは起動されません。代わりに、いくつかのファイルを個別に解決する必要があることを示す [未解決のコンフリクト ボックス] ダイアログ ボックスが表示されます。解決できないファイルが 1 つだけである場合、ダイアログ ボックスには、そのファイル名が表示されます。解決できないファイルが複数ある場合、ダイアログ ボックスにはファイル数が表示されます。 |
次のような比較オプションがあります。
競合の種類 |
ソースの変更 |
比較オプション (取得またはチェックイン) |
比較オプション (マージ) |
---|---|---|---|
バージョン |
編集 名前の変更 削除取り消し |
[ローカル バージョンとサーバー バージョン] [ローカル バージョンと元のバージョン] [サーバー バージョンと元のバージョン] |
[ソースとターゲット] [ソースと基本バージョン] [ターゲットと基本バージョン] |
|
|
[ローカル バージョンと削除済みバージョン] [ローカル バージョンと元のバージョン] [削除済みバージョンと元のバージョン] |
[ソースと削除済みバージョン] [ソースと基本バージョン] [削除済みバージョンと基本バージョン] |
|
削除 |
[元のバージョンとサーバー バージョン] |
[削除済みバージョンとターゲット] |
|
|
該当なし |
該当なし |
ファイル名衝突 |
追加 分岐 名前の変更 削除取り消し |
[ローカル バージョンとサーバー バージョン] |
[ソースとターゲット] |
書き込み可能なファイル |
該当なし |
該当なし |
該当なし |