Hatena::ブログ(Diary)

130単位

2008-08-25

Subversion 競合発生時の正しい対処

機能追加のためソースコードを修正。細かく動作確認し、いざコミット。したときに、競合が発生すると非常に萎えます。

よろしくない手順

  1. 「mine」で検索して競合発生箇所を確認
  2. 該当ファイルと競合時にできる3つのファイルをすべて削除
  3. "更新(svn update)"を実行して復元
  4. 必要な部分を編集して"コミット(svn commit)"

これまでは上記手順で半ば無理やり解決させていました。修正箇所が一部の場合が多かったため、特に問題はありませんでした。が、本日大きなミスをやらかしてしまいました。

上記手順の問題点。競合発生箇所以外でマージが行われていた場合、それを見落としてしまう、ということ。要するに、削除して復元したときには、マージ部分も編集し直す必要があるというわけです。

しかも今回の場合はコントローラ、サービス、ビューのすべてでやらかしてしまい、再修正と確認作業に多くの無駄な時間を費やしてしまいました。このような状況を防ぐために、競合の解消は下記手順でするべきだといえます。

正しい手順

  1. 該当ファイルを「mine」で検索*1
  2. コードの差異を確認して編集
  3. 「mine」が見つからなくなるまで1〜2の繰り返し
  4. "問題の解消(svn resolved)"の実行後、"コミット"

さらに"問題の解消"を行う前にファイルの差分を確認しておけば、万全といえると思います。

参考リンク

subversionをコマンドで使う練習その4 - いろいろメモをしとこうと思う
http://d.hatena.ne.jp/tadasy/20061126/1164553323

競合の解消 (TortoiseSVN日本語マニュアル)
http://tortoisesvn.net/docs/nightly/TortoiseSVN_ja/tsvn-dug-conflicts.html

*1:もしくは「<<<」

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/deeeki/20080825/svncollision
リンク元