競合の解消

時々、リポジトリからファイルを更新すると 競合 という状態になることがあります。競合は複数の開発者が、あるファイルの同じ行を変更した際に発生します。Subversion はプロジェクトについては何も知りませんから、開発者間の競合については解決できません。競合が報告されたら、問題のファイルを開き、<<<<<<< で始まる行を探してください。競合のある箇所は以下のようにマークがつけられています。

<<<<<<< filename
    あなたの変更
=======
    リポジトリからマージされたコード
>>>>>>> revision

また、競合のあるファイルごとに Subversion は手元のディレクトリにファイルを 3 つ追加します。

filename.ext.mine

作業コピーを更新する前に、(競合マーカがついていない) 作業コピーに存在するファイルです。このファイルには最新の変更以外何もありません。

filename.ext.rOLDREV

作業コピーを更新する前の BASE リビジョンのファイルです。最新の編集を行う前、チェックアウトした状態のファイルです。

filename.ext.rNEWREV

作業コピーを更新したときに Subversion クライアントが受信したファイルです。リポジトリの最新 (HEAD) リビジョンに相当します。

外部マージツール・競合エディタを TortoiseSVN競合の編集 で起動できますし、競合の解消に他のエディタを使って手で修正もできます。コードがどうあるべきか決めて、必要な変更をしてから保存してください。

その後、TortoiseSVN問題の解消 コマンドを実行し、リポジトリに変更をコミットしてください。問題の解消コマンドは、実際には競合を解消しないことに注意してください。変更をコミットできるよう、filename.ext.mine ファイルや filename.ext.r* ファイルを削除するだけです。

バイナリファイルが競合した場合、Subversion はそのファイルをマージしようとしません。手元のファイルには変更を加えず (あなたが変更したままを保証)、filename.ext.r* ファイルを作ります。自分の変更を破棄し、リポジトリのバージョンにしたい場合は、「元に戻す」コマンドを使うだけです。リポジトリのバージョンを自分の変更したファイルで置き換えるのなら、「問題の解消」コマンドを行ってコミットしてください。

親フォルダを右クリックし、TortoiseSVN問題の解消... を選択すると、「問題の解消」コマンドを複数のファイルに実行できます。指定したフォルダにある競合したファイルがすべてダイアログに表示されます。解消するものを選択してください。