program study story

プログラムの勉強 アウトプット

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さんは更新しますが、今度は同じ場所を編集しているため、自動的にマージを行うことができませんでした。

このことを

コンフリクトが発生した、衝突が起こった、競合状態にあるなどという。

競合 ・・・・・・・ファイルパス名が表示されます。

警告 ・・・・・・・・・〇〇以上競合状態にあります。

と表示されます。

この場合は、

ファイルを右ボタンで選択し、コンテキストメニューより、

TortoiseSVN

⇩⇩

「競合の編集」を選択

すると、マージツールが起動し、ツールを使って競合を解決できるように編集を行う。

左上がリポジトリ、右上がローカルファイル、下半分が編集結果

といった形で表示されます。

編集完了後、

左上にあるファイルをクリック

⇩⇩⇩

保存をクリック

⇩⇩⇩

保存したファイル内容の確認

⇩⇩⇩

競合の編集作業の完了

といった流れになります。

もし、保存をクリック後、

ファイルに「<<<<<<<<.mine」、「>>>>>>>>>.r(リビジョン番号)」などの行が残っている場合は、競合の編集がまだ正しく保存できていなので、もう一度競合の編集の作業を行います。

 

編集が終わったことは、手動にて、Subversionへ通知する必要があるので、ファイルを右ボタンで選択し、コンテキストメニューより、「TortoiseSVN」→「競合解消」を選択してください。

注)競合を編集する前に、間違えて解消してしまわないように注意してください。

確認画面を表示されます。

OKであれば、okボタンをクリック後、

解消済みにする ・・・・・・・・フォルダパスが表示される。

その後に、コミットを行い、作業完了となります。