SVN 競合/衝突の解決方法
ケース1:
Aさん、Bさんがいます。
Aさんがファイルを変更してコミットしました。
⇩⇩⇩
Bさんが同じ時に同じファイルの別のところを変更しました。
⇩⇩⇩
Bさんがコミットしようとしても、Aさんがコミットしているため、コミットできない。
⇩⇩⇩
エラー コミットに失敗しました。
エラー ファイルまたはディレクトリ’sample.txt’はリポジトリ側と比べて古くなっています。
エラー English・・・・・・・・・・・・・・・・・
このようなエラーが発生します。
この場合は、Bさんがしないといけないことは、「更新」すること。
更新を行うことで、マージされたことが更新コマンド実行後、
マージ C¥・・・・・・・とフォルダのパスが表示される
問題なく、マージされていることを確認したら、
コミットを行い、Bさんの作業は完了になります。
なので、
エラー コミットに失敗しました。
エラー ファイルまたはディレクトリ’sample.txt’はリポジトリ側と比べて古くなっています。
エラー English・・・・・・・・・・・・・・・・・
⇩⇩⇩
コマンド 更新を実行
⇩⇩⇩
マージ C¥・・・・・・・とフォルダのパスが表示される
⇩⇩⇩
コマンド コミットをする
⇩⇩⇩
作業完了
という流れになります。
ケース2:
AさんBさんがいます。
ケース1の対応後、AさんとBさんが同じファイルで、同じ場所を編集している場合
ケース1とおなじ条件のため、Aさんはコミットできません。
このため、Aさんは更新しますが、今度は同じ場所を編集しているため、自動的にマージを行うことができませんでした。
このことを
コンフリクトが発生した、衝突が起こった、競合状態にあるなどという。
競合 ・・・・・・・ファイルパス名が表示されます。
警告 ・・・・・・・・・〇〇以上競合状態にあります。
と表示されます。
この場合は、
ファイルを右ボタンで選択し、コンテキストメニューより、
⇩⇩
「競合の編集」を選択
すると、マージツールが起動し、ツールを使って競合を解決できるように編集を行う。
左上がリポジトリ、右上がローカルファイル、下半分が編集結果
といった形で表示されます。
編集完了後、
左上にあるファイルをクリック
⇩⇩⇩
保存をクリック
⇩⇩⇩
保存したファイル内容の確認
⇩⇩⇩
競合の編集作業の完了
といった流れになります。
もし、保存をクリック後、
ファイルに「<<<<<<<<.mine」、「>>>>>>>>>.r(リビジョン番号)」などの行が残っている場合は、競合の編集がまだ正しく保存できていなので、もう一度競合の編集の作業を行います。
編集が終わったことは、手動にて、Subversionへ通知する必要があるので、ファイルを右ボタンで選択し、コンテキストメニューより、「TortoiseSVN」→「競合解消」を選択してください。
注)競合を編集する前に、間違えて解消してしまわないように注意してください。
確認画面を表示されます。
OKであれば、okボタンをクリック後、
解消済みにする ・・・・・・・・フォルダパスが表示される。
その後に、コミットを行い、作業完了となります。