*

* SVN Index   * Tips   * Top

Subversion(TortoiseSVN)でツリーコンフリクト(ツリーの競合)を解決する方法

Subversion バージョン1.6では、ツリーコンフリクト(ツリーの競合)を 検出できるようになりました。 どういった機能なのか、具体的に操作しながら発生・解消してみましょう。

ツリーコンフリクト(ツリーの競合)検出の機能は、 Subversionのサーバ・クライアントがバージョン1.6以上になっていることが必要です。

(ご注意) このページをご利用になった結果の影響については、 一切責任を負いませんので、あらかじめご了承願います。

  1. まず「sample10.txt」というものがあったとして、 これを例にAさんとBさんと2人で作業しようとしています。

  2. Aさんが、sample10.txtの名前を変更(リネーム)しようとしています。

  3. Aさんは、sample10.txtをsample11.txtへ名前を変更しました。

  4. Aさんは、名前を変更した結果をコミットしました。

  5. 一方のBさんは、Aさんがファイル名を変更したことを知らずに sample10.txtを編集しました。 (本当はあってはいけないのですが‥‥。 きちんとコミュニケーションは取りましょうね。)

  6. Bさんは編集しようとした結果をコミットしようとします。

  7. しかし、Aさんが先にコミットしているので、Bさんはコミットできません。

  8. ここでBさんがしないといけないことは、「更新」することです。

  9. Bさんは更新しました。 sample10.txtは、Aさんが名前を変更されてしまっているのでもう存在しません。 一方、Bさんはこのファイルを編集してしまったので、競合が発生してしまいました。 このことを、ツリーの競合(ツリーコンフリクト)が発生したといいます。

  10. Bさんは、競合を編集して解消しなければなりません。 コンテキストメニューより、[TortoiseSVN] → [競合の編集]を選択してください。 競合の解消ではありません!

  11. BさんはAさんと相談して、sample10.txtをsample11.txtへ 名前を変更することを納得しました。 このファイルはもう必要ないので削除します。 「ファイルを削除」を選択して[OK]を押します。

  12. 一方で、Bさんが編集したはずの結果はどうなっているでしょう? 名前を変更した後のsample11.txtへ反映されているはずです。 通常の方法でファイルを開いて内容を確認してください。

  13. Bさんは、結果に問題がないことを確認します。

  14. これで、競合は解消できたことがわかりました。 競合が発生したファイルは既に削除してしまっていますので、 今回は競合を解消するものは特にありません。 このまま、Bさんはコミットしてください。

(おまけ)
ここまでの作業をまとめると、 今回は「Aさんはファイル名を変更しただけ」で 「ファイルの内容を編集したのはBさんだけ」だった ことになりますので、ツリーの競合は発生したものの、 ファイルの内容に競合は発生しませんでした。
さて、それでは今回の話をいちばん最初まで戻って、 「Aさんがsample10.txtをsample11.txtへ名前を変更して、かつ、その内容を編集していた」 としたら、どうなるでしょう? (おまけ2)
ベンダブランチを利用しているときの注意点
shacho@critical.ne.jp
Last modified: Thu May 21 18:00:00 JST 2009