競合してコミット出来ない時には
複数のメンバーで開発を行っている時には、1つのファイルを同時に2人が編集していると言う事もあると思います。 TortoiseSVNでは、同一ファイルを複数人が編集した状態であることをコミット時にエラーとして教えてくれ、一方のデータが消えてしまうことを防ぎます。 ここでは、競合のエラーの解消方法を記載します。
前提
- sample.txtを同じプロジェクトのmember1とmember2が同時に編集。
- member2が先にコミットを行った。
- member1がsample.textを編集し、コミットを行おうとしたところ、以下のようなエラーが表示。
解消方法
TortoiseSVNでは、自動的にマージ(結合)する機能を持っていますが、どのように結合すべきかTortoiseSVNが判断出来ない時はマージツール等で手動で結合する必要があります。 まずは、自動的にマージ(解消方法1)を行い、解消されないようでしたらマージツールで手動結合(解消方法2)に進んで下さい。
解消方法1
[SVN更新]を実行します。
- 以下のようなメッセージが出た場合には、編集内容が自動的に結合(マージ)されています。
競合メッセージが表示された場合には解消方法2へ進んで下さい。
- 内容を確認します。
- 問題がなければコミットを行います。
解消方法2
解消方法2では[SVN更新]を実行すると、以下のような競合メッセージが表示された際の対応法です。
競合したファイルには黄色い!マークが表示されます。
これは、他の作業者が行った変更と作業コピー上で行っている変更がそれぞれ同じ箇所である場合に発生します。 Subversion は変更内容をマージしようと努めますが、変更箇所が同じ箇所の場合 Subversion にはどのようにマージすればよいのか判断できません。このとき競合(衝突)と呼ばれる状態になります。
競合が起こっているファイル(黄色!マークのファイル)の上で右クリックし、メニューより[TortoiseSVN]-[競合の編集]を選択します。
- 以下のようなマージツールが開きます。
- 右 Mine : 自分の作業コピーのデータ内容
- 左 Theirs : リポジトリのデータ内容
- 下 マージ : 編集結果
- 編集したい箇所を右クリックするとメニューが表示されどのようにマージするか選択出来ます。編集結果が下に表示されます。
ここでは、[Theirsの前にMineのテキストブロックを利用]を選択し、自分のテキストブロック「おはようございます。member1です。」をリポジトリのテキストブロック「こんにちは。member2です。」の前に挿入させました。
編集が完了したら[ファイル]-[保存]を選択します。
ファイルの内容を確認し問題が無いようでしたら、競合が解消された結果をリポジトリに反映させます。ファイルを右クリックし、メニューより[TortoiseSVN]-[競合の解消]を選択します。
- 確認画面が表示されますので、[OK]をクリックします。
- 競合が解消されてアイコンも通常の編集後のマークに変わりました。
→
- 通常通りコミットして完了です。
リンク
WikicikloneTOPへ - tracpathのオンラインドキュメントサイトのTOPページです。