スポンサーリンク

[TortoiseSVN] 競合(コンフリクト)の解決方法

競合とは

競合とは、複数のユーザーの変更が同時に発生して、どちらの変更が正しいのかわからない状態のこと。
競合の解決とは、これを修正して解決すること。

競合を解決してみる

作成されるファイルについて

競合が発生すると、下記のファイルが作成される。

作成されるファイル 意味
filename.txt 自分が変更したファイルと最新リポジトリのファイルの差分
filename.txt.mine 自分の変更したファイル
filename.txt.r古いリビジョン番号 自分が最後にリポジトリから更新したファイル
filename.txt.r新しいリビジョン番号 最新リポジトリのファイル

filename.txtを右クリックメニューから競合の編集を選ぶと、競合を修正するためのエディタが開くのでそこで競合解決の作業をする。

実際に競合の解決をする

まずは今の状態について。
リポジトリにhello.txtがある状態で内容は下記のとおり。

hello
world

自分以外の人が、下記のように変更してコミットしたとする。

hello
svn

そのあと、自分が下記のように変更したファイルをコミットしようとする。

hello
world
end

そうするとコミットが失敗と出て、更新が必要と指示されるので更新する。

そのあとファイルがいろいろと出てくる。
右クリックのメニューから競合の編集を選び、エディタを開く。

下記のように差分が表示されるので、修正をする。
左上が最新リポジトリのファイルがどのように更新されたかが分かる。
右上は自分の変更したファイルがどのように更新されたか。
下が変更した所を合わせたものを表示していて、判断できない部分が??となっている。

解決のやり方は色々ありますが、自分でどうするかを判断する必要がある。
最終的なファイルとして、下記のようになることを目的とする。

hello
svn
end

この場合、作業するのは下のマージ画面。
2行目の?で右クリックし、theirsのテキストブロックを使用してsvnに更新。
3行目の?で右クリックし、mineのテキストブロックを使用してendに更新する。

これで下のファイルをコミットしていく。
上のメニューにある解決済みとみなすを選択して、コミットすれば、問題なくコミットできる。

SVN
スポンサーリンク
シェアする
trelab