SVN - Checksum tidak cocok saat memperbarui

122

Ketika saya mencoba memperbarui beberapa file dari Subversion, saya mendapatkan kesalahan:

org.tigris.subversion.javahl.ClientException: 
Checksum mismatch while updating 'D:\WWW\Project\\.svn\text-base\import.php.svn-base'; expected: '3f9fd4dd7d1a0304d8020f73300a3e07', actual: 'cd669dce5300d7035eccb543461a961e'

Mengapa saya mendapatkan ini? Bagaimana cara memperbaikinya?

Koralek M.
sumber

Jawaban:

70

Cara termudah untuk memperbaikinya (jika Anda tidak memiliki banyak perubahan) adalah menyalin perubahan Anda ke direktori lain, menghapus direktori tempat proyek Anda diperiksa, dan menyelesaikan proyek lagi.

Kemudian salin kembali perubahan Anda (jangan salin folder .svn apa pun) dan komit, dan lanjutkan.

sjakubowski
sumber
9
Saya baru saja menghapus folder di mana file masalah dan saya memperbarui seluruh proyek. Sekarang sepertinya baik-baik saja.
Koralek M.
+1 Alternatif lain yang saya temukan membuat saya meretas database svn, jauh lebih mudah
SeanDowney
@ SeanDowney bagaimana melakukan itu?
arvindwill
@arvindwill Maaf, saya tidak terlalu jelas dalam komentar saya, metode ini jauh lebih mudah. Berikut adalah alternatif yang menakutkan: maymay.net/blog/2008/06/17/…
SeanDowney
2
Ini sama sekali bukan perbaikan khusus. Anda selalu dapat menghapus semua data lokal Anda dan mulai dengan salinan baru dari repo.
tim
197

Jika Anda menggunakan SVN 1.7+, ada solusi yang dijelaskan di sini .

Sekadar rekap:

  1. Buka folder dengan file yang menyebabkan masalah
  2. Jalankan perintah svn update --set-depth empty(catatan: ini akan menghapus file Anda, jadi buat salinannya dulu!)
  3. Jalankan perintah svn update --set-depth infinity
jrd
sumber
17
Sementara ini berhasil untuk saya, catatan "svn update --set-depth empty" akan menghapus semuanya dari jalur itu, jadi buat salinannya terlebih dahulu
tristanbailey
3
Ini berfungsi dengan baik untuk memperbaiki repositori raksasa di lokasi yang jauh. Meskipun melakukan pembayaran baru akan berhasil, itu akan memakan waktu lebih dari satu jam; ini membutuhkan waktu beberapa menit.
Brian Gillespie
hai saya telah menggunakan jendela dan tortoisesvn sebagai klien svn .. Saya telah mencoba solusi Anda. tetapi masih menunjukkan isse
Amit Bera
Baru saja mengganti direktori .svn dari repositori baru ke yang lama, itu berhasil :)
harishkumar329
Ini bekerja dengan baik untuk saya, terima kasih! Perlu dicatat bahwa poin # 1 adalah menelusuri folder (atau file) sebenarnya yang menyebabkan masalah. Maka Anda tidak perlu memperbarui banyak. Saya memiliki folder dengan beberapa lusin file di dalamnya yang saya gunakan Tortoise "Perbarui Ke-> hanya item ini" pada folder dan kemudian "Perbarui Ke-> rekursif sepenuhnya" untuk mendapatkan semuanya kembali. Tetap saja semua orang berhati-hati karena ini menghapus file di folder itu! Pada tautan VPN yang lambat dengan repo banyak-gigabyte dan --set-depth yang disetel dengan baik, solusi "standar" sama sekali tidak berguna.
dash-tom-bang
6

Saya punya masalah yang sama. Penyedia utama adalah antivirus "FortiClient" (antivirus + VPN CLient). Ketika saya menonaktifkannya - semua pembaruan / pembayaran dilakukan dengan benar

pawicek
sumber
1
Ini adalah satu-satunya jawaban yang memecahkan masalah saya. Saya tidak pernah bisa memikirkan ini. Terima kasih!
waktu
5

Saya menemukan cara yang lebih mudah untuk memperbaiki masalah ini. Anda tidak dapat melakukan ini langsung dari gerhana. Langkah:

  1. Arahkan ke struktur folder ruang kerja di windows
  2. ganti nama foldernya
  3. menyegarkan di gerhana
  4. Sekarang folder dan file akan dihapus dari proyek dalam gerhana dan akan muncul di bawah folder berganti nama baru
  5. Sekarang coba opsi "Sinkronkan dengan Respositoria".

Ini akan memulihkan folder basis teks di .svnfolder. Ketidakcocokan checksum saat memperbarui kesalahan tidak akan muncul lebih lanjut.

Divya
sumber
1

Ini terjadi pada saya menggunakan plug-in dan sinkronisasi Eclipse. File yang menyebabkan masalah tidak memiliki perubahan lokal (dan sebenarnya tidak ada perubahan jarak jauh sejak pembaruan terakhir saya). Saya memilih "kembali" untuk file tersebut, tanpa modifikasi lain pada file, dan semuanya kembali normal.

Jason Merecki
sumber
1

Saya mengalami kesalahan yang sama tetapi untuk satu file. Di IntelliJ IDEA saya dapat membuat salinan file, lalu masuk ke proyek dan menghapus file yang dimaksud, lalu berhasil berkomitmen. Kemudian, saya membuat file baru dengan nama yang sama dan menyalin isinya kembali ke dalamnya. Saya kira Anda akan kehilangan riwayat revisi tetapi berhasil.

codeanimalsAsGuest
sumber
1

Jika Anda memiliki rekan kerja yang bekerja dengan Anda:

1) minta dia untuk mengganti nama file yang menyebabkan masalah dan commit

2) Anda update(sekarang Anda melihat file dengan checksum tidak valid dengan nama berbeda)

3) ganti namanya kembali ke nama aslinya

4) commit(dan minta kolega Anda updateuntuk mendapatkan kembali nama file dalam keadaan awalnya)

Ini memecahkan masalah saya.

Petko Kostov
sumber
1

Saya menggunakan Tortoise SVN, setelah menelusuri semua solusi di halaman ini dan tidak berfungsi,

Saya akhirnya mencadangkan file masalah. dan gunakan Repo Browserhapus file masalah di dalamnya, lalu perbarui folder lokal sehingga file di folder lokal dihapus. Kemudian salin kembali file cadangan dan Add > Commit, kemudian saya berhasil memperbarui.

Satu-satunya kelemahan dari metode ini adalah riwayat file ini akan dihapus.

yu yang Jian
sumber
0

Untuk mengatasi ini ikuti langkah-langkah berikut ini:

  1. Buka file entri yang terletak di direktori .svn di mana Anda mendapatkan kesalahan.
  2. Temukan entri untuk kesalahan pemberian file dan ganti nilai yang diharapkan dengan nilai sebenarnya dalam kesalahan.
  3. Sekarang sinkronkan dan coba perbarui.

Jika masih tidak berhasil. Coba ini. Ini hanya solusi:

  1. Hapus file dari sistem Anda.
  2. Hapus entri file dari file entri. (Mulai dari nama file hingga karakter khusus).
  3. Sekarang Sinkronisasi dan perbarui file.

Ini akan mendapatkan file versi terbaru dari repositori dan semua konflik akan diselesaikan.

DeepInJava
sumber
0

memiliki masalah serupa di server tetapi direktori SVN sangat besar, tidak ingin menghapus dan menyinkronkan ulang jadi saya hanya membuat salinan file secara lokal dan kemudian menghapusnya. Ketika pembaruan berhasil dan menambahkan file kembali.

rocketdoctor
sumber
0

coba hapus file dan hapus referensi file dari entri file di bawah direktori .svn

mocia
sumber
0

Saya mengalami kesalahan serupa dan memperbaikinya sebagai berikut:

('Perbaikan' saya didasarkan pada asumsi yang mungkin atau mungkin tidak benar karena saya tidak tahu banyak tentang cara kerja subversi secara internal, tetapi pasti berhasil untuk saya)

Saya berasumsi bahwa .svn \ text-base \ import.php.svn-base diharapkan cocok dengan komit terbaru.

Ketika saya memeriksa file tempat saya mengalami kesalahan, file dasar TIDAK cocok dengan komit terbaru di repositori.

Saya menyalin teks dari komit terbaru dan menyimpannya di folder .svn, mengganti file yang salah (membuat salinan cadangan jika asumsi saya salah). (file ditandai hanya baca, saya mengosongkan bendera itu, menimpa, dan menyetelnya kembali ke hanya baca)

Saya kemudian bisa berkomitmen dengan sukses.

mendel
sumber
0

Solusi saya adalah:

  1. Jalankan pembersihan svn dari sistem file
  2. Beralih ke cabang lain
  3. Selesaikan konflik
  4. Beralih ke cabang "bermasalah"
  5. Jalankan pembersihan dari Spring Tool Suite
  6. Jalankan Pembaruan Proyek
Alessandro C
sumber
0

1. 'perbarui ke pengembalian' centang 'hanya item ini' di bawah direktori 2. perbarui lagi centang 'rekursif sepenuhnya'

tujuh pound
sumber