競合の解決

競合とは、複数人で同じファイルの同じ箇所を編集してリポジトリにコミットしようとした場合をいい、その状態になったときを競合の発生といいます。競合が発生すると、アイテムに付いた管理状態アイコンが(競合)になります。競合の解決とは、競合が発生したときにどの変更内容を保存するかを選択する操作です。

競合が発生するときの操作

複数の開発者で開発を行っている場合、同じファイルを二人以上の人が同時に編集してコミットしようとする場合があります。例として、リポジトリに「test.txt」というファイルがある状態(リビジョン1)で開発者A、開発者Bが同時にそのファイルを更新したケースを以下に示します。

この段階で開発者Bは手元の作業コピーに「自分が編集したtest.txt」がある状態で「開発者Aがコミットしたtest.txt」を取得することになります。この場合、Subversionは次のような処理を行います。

(1)のマージが行われた場合、そのファイルには開発者A、開発者Bの両方の変更が反映されているので、開発者Bは次の手順としてコミットすることができます。(2)の競合が発生した場合、競合の解決ダイアログボックスが表示されます。ダイアログボックスが表示された時に競合を解決するか、後で解決するかを選択することができます。

競合の解決方法

競合が発生した場合、対象のファイルと同じフォルダに競合解決用の作業ファイルが以下のファイル名で作成されます。競合の解決ダイアログボックスで、どのファイルを作業コピーとして保存するかを選択します。ダイアログボックスで「OK」をクリックすると、選択した作業ファイルが元のファイル名で作業コピーに保存され、すべての作業ファイルは削除されます。次にコミットしたときに、競合の解決で選択したファイルがリポジトリに反映されます。

例として、上にあげた例の場合のファイル名を併記します。

作業ファイル名 説明
[元のファイル名].[作業コピーのリビジョン] test.txt.1 自分が編集を開始する前の作業コピーにあったリビジョンのファイル
[元のファイル名].mine test.txt.mine 競合が発生する前に自分が作業コピーを編集した内容のファイル
[元のファイル名].[最新リビジョン] test.txt.2 リポジトリにある最新リビジョンのファイル
[元のファイル名] test.txt 競合結果を可能な限りマージした結果のファイル。競合部分は、以下の括弧で囲まれて表示されます。
「>>>>>>>>>>>>>>>>>>>>>>>>>>>」
「<<<<<<<<<<<<<<<<<<<<<<<<<<<」
元のファイルとは内容が異なるため注意が必要です。

操作方法

注意点

管理コンソールの「ツール」-「アカウント」のユーザー情報の詳細設定で表示される「バージョン管理設定」項目で、「ロックが必要なファイル」項目に設定されている場合、ファイルの編集にはロックが必要になります。あるユーザーがロックを取得している場合、他のユーザーはロックを取得することはできないので競合が発生することはありません。

フローデザイナーで作成、保存を行う以下のフローサービス用のファイルは、「ロックが必要なファイル」項目の初期値に設定されています。

上記のフローサービス用のファイルを「ロックが必要なファイル」項目に設定しないようにすると、ロックを取得せずに編集することができるようになります。その場合、複数人で同時に編集すると自動的にマージしたり競合が発生したりする場合があります。自動的または競合の解決によってマージされたフローサービス用のファイルは、正しく動作しない可能性があります。フローデザイナーで作成、保存を行うフローサービス用ファイルは管理コソールでロックが必要な設定で使用するようにしてください。

 

▲ このページのトップへ