小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


TortoiseSVNでchecksum mismatchというエラーでコミットできない場合の対処方法

はじめに

Subversion + TortoiseSVNを使っていて、ごくたまにchecksum mismatchというエラーでコミットできない場合があります。この記事ではchecksum mismatchが出た場合の対処方法について書いています。

checksum mismatchとは何か?

サーバ上のリポジトリで算出されたハッシュ値と作業ディレクトリで算出されたハッシュ値が一致しない場合にchecksum mismatchのエラーがでるようです。詳細な原因はわかりませんでした。

原因は不明だが,リポジトリで計算されたハッシュ値(MD5?)がリポジトリと作業ディレクトリでマッチしないと発生する模様

  • 作業ディレクトリ下にある.svn/text-base ディレクトリの中身 file.hoge.svn-base というファイルがある.(fileとhogeは適当)
  • このファイルが作業ディレクトリにおける最新リビジョンのコピーである
  • こいつの中身を強制的に書き換えると,上記のようなエラーに陥る

SVNがらみ - PukiWiki(AkiWiki) はてなブックマーク - SVNがらみ - PukiWiki(AkiWiki)

checksum mismatchというエラーでコミットできない場合の対処方法

どうやら再チェックアウトして別の作業コピーを作ってからそっち経由でコミットする必要があるようです。

本来の作業ディレクトリをWorkAとして,下記ステップを実行
作業ディレクトリをもう1度別名でチェックアウト(WorkBとする)
WorkAの編集されたファイル達をWorkBにコピーする
WorkBからリポジトリにコミットする
WorkAを一旦退避させる*7
WorkBをWorkAの位置にmoveし,WorkAを削除
SVNがらみ - PukiWiki(AkiWiki) はてなブックマーク - SVNがらみ - PukiWiki(AkiWiki)

Subversion入門 (エッセンシャルソフトウェアガイドブック)
佐藤 竜一
技術評論社
売り上げランキング: 96907