Skip to content
2009/02/28 / highmt

svkトラブル

最近お仕事でsvkを利用しているのですが、
今日、ミラーからコピーしているローカルのリポジトリがリモートと異なってしまうという現象に見舞われました。


リモート
 ^
 |
 v
ローカル/ミラー(svk sync)
 ^
 |
 v
ローカル/コピー(svk copy)
 ^
 |
 v
作業コピー(svn co)

という感じでローカルのリポジトリで作業して、
テストが終わったら svk sync //mirror/xxx、svk pull //local/xxx、svn update、svk push //local/xxx する、という使い方をしています。

問題は、svk pull で起きました。
いつものようにsvk pullしたところ、リモートで更新があり、ローカルにマージされたのですが、
自分ではまったく触っていないファイルで衝突が発生しました。

自分では触っていないのでいつもなら迷わずtheirsを選択するところですが、
今日はdiffを選択して差分を表示してからtheirsを取り込みました。

が、どういうわけか、取り込まれたソースに

>>>> YOUR VERSION xxxx
...
==== ORIGINAL VERSION xxxx
...
==== THEIR VERSION xxxx
...

といった行が挿入されてしまいました。
結果、リモートとローカルで差が生じてしまいました。

今回は、とりあえず問題のファイルをリモートから取ったファイルで上書きしてローカルにコミットした上で、

svk delete //local/xxx
svk copy //mirror//xxx //local/xxx
svn update

して解消しました。

svk push –C //local/xxx

で無事Empty mergeになりました。
残念ながら、ローカルの履歴はsvk deleteで分断されてしまいましたが。

よく考えたら、ローカルに上書きコミットするだけでよかったのかもしれません。
なんでそのとき svk push -C しなかったかというと、単に知らなかったからです。
今度起きたら(起きないでほしいけど)試してみよぅ。

広告
%d人のブロガーが「いいね」をつけました。