web-dev-qa-db-ja.com

SVN「作業コピーのテキストベースが壊れている」を修正するにはどうすればよいですか?

私のsvn repoへの多くの幸せなコミットの後、突然関係はすっかり悪化しました... svnは彼女の蓋をひっくり返して叫びました: "作業コピーのテキストベースが壊れています!"

何が原因でしょうか?どうすれば修正できますか?

Working copy text base is corrupt
svn: Commit failed (details follow):
svn: Checksum mismatch for '~/blah/.svn/text-  base/sumonet.py.svn-base'; expected: '548b9bb4b24bc580ab8694c583b28013', actual: '8b2b3cf4615de3d8520ae4841b3b0a8b'
31
Niel de Wet

これはエラーでした。

svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of : '/home/.../exampleFileCorrupted.cpp'
....

スムーズに機能した明確な解決策:

注意:SVN環境外の別のファイルにファイルをコピーします。

cp exampleFileCorrupted.cpp ~/Desktop/

次に以下に従ってください:

  1. 破損したファイルがあるパスへのcd(これは、次のように示されます:テキストベースのチェックサムの不一致
  2. svn rm --force exampleFileCorrupted.cpp

    表示されます:D exampleFileCorrupted.cpp

  3. 現在のSVNフォルダーのポイント1の前に保存したファイルをコピーします with:

    cp ~/Desktop/exampleFileCorrupted.cpp .

(「ここにコピー」を意味する最後のポイントをお見逃しなく)

  1. svnに追加 with:svn add exampleFileCorrupted.cpp

    表示されます:exampleFileCorrupted.cpp

  2. 変更をコミットsvn commit -m "Commit Message"

これで問題が解決したかどうかをお知らせください。

35

これは私にとってはうまくいきます:

svn rm --keep-local THE_CORRUPTED_FILE
svn add THE_CORRUPTED_FILE
svn ci

よろしく、

18
geckos
  1. 問題のあるファイルを別の場所にコピーし、
  2. リポジトリ内のファイルを削除してコミットし、
  3. ファイルをSVNにコピーしてコミットする
15
ryrysz

別の新しいチェックアウトを作成し、古い作業コピーで行った変更を新しいものにコピーします。

15
khmarbaise

新しいSubversionバージョンでは、.svn/text-base/ディレクトリはありません。 .svn.svn/pristineの下の作業ルートに格納され、エラーメッセージは次のようになります。

Sending        README
Transmitting file data .svn: E155017: Commit failed (details follow):
svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of '/home/user/tmp/svntest/README':
   expected:  1f9167bc01e5bc9bfcb928ff03d6700a
     actual:  e0a1692ff5cab91e3e3a0d02dabe0251

svn: E200003: Delta source ended unexpectedly

https://Gist.github.com/siddhadev/5814802 でbashスクリプトを使用して修正できます。破損したsvn-baseファイルを新しいファイルに置き換えます。

7
siddhadev

@siddhadevスクリプトは動作するはずですが、手動で実行することを好む人のために:

  1. 問題のあるファイルの最新リビジョンをlastworkingrev.txtとしてエクスポート
  2. sha1sum lastworkingrev.txtでsha1チェックサムを取得します
  3. find . -name "SHA1_CHECKSUM.svn-base"でSubversionの初期ファイルを見つけ、lastworkingrev.txtの内容で上書きします
  4. コミット
3
Julian Go

私は同じ問題を抱えていましたが、以前の答えはどれも役に立ちませんでした。私の場合、Subversionリポジトリはバージョン1.6でしたが、IntelliJにバージョン1.7でのチェックアウトを許可していました。 「svn:E200014:基本チェックサムの不一致」エラー以外のバージョンの不一致の兆候はありませんでした。 正しいバージョンで新しいツリーをチェックアウトするだけで問題が修正されました。

2
Gary Rush

https://github.com/jasperlee108/svndumpfilterIN でダンプをフィルタリングした後、この問題が発生しました

Md5チェックサムを削除して修正...

sed -i '/Text-copy-source-md5/d' eias_only.dmp

ただし、いくつかの結果が生じる可能性があります...

上記のすべてを試しましたが、クリーンアップが機能しません。 SVNは私に新しいコピーをチェックアウトすることを勧めます。しかし、プロジェクトが大きすぎて、変更したコードが多すぎるため、比較に多くの時間がかかります。ここでは、すべての変更が保持された状態で問題を解決した方法を示します。

  1. すべての。svnフォルダを削除します。このフォルダは1つ存在する場合と、SVNのバージョンに応じて多く存在する場合があります。ひとつひとつを見つけて削除してください。
  2. 作業フォルダをチェックアウトします。 「空のフォルダではありません」という警告が表示されるので、「はい」をクリックします。次に、作業コピーが回復されます。
0
Linda Zeng

私は自分の作業ディレクトリがバージョン管理されていることを信頼しないことを学びました。コミットする準備ができたら、再帰的なdiffを実行して、変更をチェックアウト済みディレクトリーにコピーします。そうすれば、SVNでチョークが発生した場合、チェックアウトをrm -Rfして新しいチェックアウトを実行し、コピーコマンドを繰り返します。

私は解決策を探しにここに来ませんでした。私はこの不安定な動作の理由を探しに来ましたが、何も見つかりませんでした。私がブランチを使用し、コマンドラインからすべてを実行している唯一の人でさえ、それは起こります。これは、Eclipseや他のインターフェイスよりも信頼しています。

0
Jerry Miller

既存のコピーを削除して、問題が解決するかどうかを確認してください。

0
Anand Dwivedi

SVNクリーンアップチーム->クリーンアップを実行します。

0
Jeevitesh Singh