複数人で編集した場合、同じ箇所を編集することもあります(コンフリクト conflict)。
その場合、AnkhSVNは「同じ箇所を編集しています」と警告し、解決法を4種、用意します。

コンフリクトの例

1. TomさんがForm1.vbを編集、Commitした(Form1.vbに青チェック)。

2. はなこさんが同じ箇所を編集、Updateすると、

3. コンフリクトが発生します。
解消法として、以下の4種のコンフリクト解消方法選択画面が表示されます。


コードを確認しながら修正します。

自分のファイルを優先します。

リポジトリのファイルを優先します。

競合部分編集前に戻します。



Mark the conflict and let me resolve later・・・コードを確認しながら修正


① 1番目を選択すると、はなこさんのForm1.vbはSVNによって以下のように編集して返されます。

② 「<<<<<<<.mine」から「=======」の間が自身の編集分、
「=======」から「>>>>>>>.r14」の間がリポジトリに登録されている部分です。
この例では、はなこはTomと協議の結果、はなこのコードを採用することにしました。

③ Pending Changesウィンドウで先程編集したファイルを右クリック、Resolve→Resolve Conflictを選択します。

④ Changeの部分が「Modified」になります。

⑤ 「Commit」をクリックしてコンフリクトの解消をリポジトリに反映します。
↓Commit後の画面

⑥ その後、TomはUpdateを行います。

⑦ Update後、TomのPCのコードも"はなこ"が反映されます。







Resolve the conflict using my version of the file・・・自分のファイルを反映


① リポジトリは無視され、自分の編集が残されます。
これをコミットすると自分の編集がリポジトリに反映されます。

② TomがUpdateすると、はなこの変更が警告無しに反映されます。
↓Update前

↓Update後







Resolve the conflict using the repository version of the file・・・リポジトリのファイルを反映


自分の編集は無視され、リポジトリが残されます。
リポジトリに戻るので、Commitする必要もないです。
① 選択前

② 選択後







Resolve the conflict with pre-merge base version of the file・・・競合部分編集前に戻る。


4番目を選択すると、競合となる部分が編集される前に戻ります。
この場合、
TomのDebug.WriteLine("Tom")と、はなこのDebug.WriteLine("はなこ")が競合しているので、TomがCommitする前に戻ります。

① 選択前

② 選択後


























_
最終更新:2010年11月22日 20:07