SVN - Checksum ไม่ตรงกันขณะอัปเดต


122

เมื่อฉันพยายามอัปเดตไฟล์บางไฟล์จากการโค่นล้มฉันได้รับข้อผิดพลาด:

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

ทำไมฉันถึงได้รับสิ่งนี้ จะแก้ไขได้อย่างไร?

คำตอบ:


70

วิธีที่ง่ายที่สุดในการแก้ไข (หากคุณไม่มีการเปลี่ยนแปลงมากนัก) คือคัดลอกการเปลี่ยนแปลงไปยังไดเร็กทอรีอื่นลบไดเร็กทอรีที่โปรเจ็กต์ของคุณถูกเช็คเอาต์และชำระเงินโปรเจ็กต์อีกครั้ง

จากนั้นคัดลอกการเปลี่ยนแปลงของคุณกลับใน (อย่าคัดลอกโฟลเดอร์. svn ใด ๆ ) และคอมมิตและดำเนินการต่อ


9
ฉันเพิ่งลบโฟลเดอร์ที่เป็นไฟล์ปัญหาและฉันอัปเดตโครงการทั้งหมด ตอนนี้เหมือนจะโอเค
Koralek M.

+1 ทางเลือกอื่นที่ฉันพบทำให้ฉันแฮ็คฐานข้อมูล svn ได้ง่ายกว่ามาก
SeanDowney

@SeanDowney ว่าจะทำยังไง?
arvindwill

@arvindwill ขออภัยฉันไม่ค่อยชัดเจนในความคิดเห็นของฉันวิธีนี้ง่ายกว่ามาก นี่คือทางเลือกที่น่ากลัว: maymay.net/blog/2008/06/17/…
SeanDowney

2
นี่ไม่ใช่การแก้ไขเฉพาะเลย คุณสามารถลบข้อมูลทั้งหมดในเครื่องของคุณและเริ่มต้นด้วยสำเนาใหม่จาก repo
ทิม

197

ในกรณีที่คุณกำลังใช้ SVN 1.7+ มีวิธีแก้ปัญหาที่อธิบายไว้ที่นี่

สรุป:

  1. ไปที่โฟลเดอร์ที่มีไฟล์ที่ทำให้เกิดปัญหา
  2. คำสั่ง Execute svn update --set-depth empty(หมายเหตุ: สิ่งนี้จะลบไฟล์ของคุณดังนั้นให้ทำการคัดลอกก่อน!)
  3. ดำเนินการคำสั่ง svn update --set-depth infinity

17
ในขณะที่สิ่งนี้ใช้ได้ผลสำหรับฉันโปรดทราบว่า "svn update --set-depth empty" จะลบทุกอย่างออกจากเส้นทางนั้นดังนั้นให้ทำสำเนาก่อน
tristanbailey

3
วิธีนี้ใช้งานได้ดีสำหรับการแก้ไขที่เก็บข้อมูลขนาดใหญ่ในสถานที่ห่างไกล ในขณะที่ทำการชำระเงินใหม่จะได้ผลจะต้องใช้เวลามากกว่าหนึ่งชั่วโมง ใช้เวลาไม่กี่นาที
Brian Gillespie

สวัสดีฉันใช้ window และ tortoisesvn เป็นไคลเอนต์ svn .. ฉันกำลังลองวิธีแก้ปัญหาของคุณ แต่มันยังคงแสดง isse
Amit Bera

เพิ่งแทนที่ไดเร็กทอรี. svn จากที่เก็บใหม่เป็นเก่ามันใช้งานได้ :)
harishkumar329

สิ่งนี้ได้ผลดีสำหรับฉันขอบคุณ! เป็นที่น่าสังเกตว่าจุด # 1 คือการเจาะลึกไปยังโฟลเดอร์ (หรือไฟล์) จริงที่เป็นสาเหตุของปัญหา จากนั้นคุณไม่ต้องอัปเดตมาก ฉันมีโฟลเดอร์ที่มีไฟล์ไม่กี่โหลในนั้นซึ่งฉันใช้ Tortoise "อัปเดตเป็น -> เฉพาะรายการนี้" ในโฟลเดอร์แล้ว "อัปเดตไปที่ -> เรียกซ้ำทั้งหมด" เพื่อรับคืนทั้งหมด ทุกคนยังคงระวังว่าสิ่งนี้จะลบไฟล์ในโฟลเดอร์นั้น! ในลิงก์ VPN ที่ช้าพร้อมกับ repo ขนาดใหญ่และปรับแต่งอย่างละเอียด - ตั้งค่าความลึกตลอดมาโซลูชัน "มาตรฐาน" ก็ไร้ประโยชน์
ประ - เถิดเทิง

6

ฉันมีปัญหาเกี่ยวกับซิมลาร์ ผู้ให้บริการหลักคือโปรแกรมป้องกันไวรัส "FortiClient" (โปรแกรมป้องกันไวรัส + VPN CLient) เมื่อฉันปิดใช้งาน - อัปเดต / ชำระเงินทั้งหมดถูกต้อง


1
นี่เป็นคำตอบเดียวที่ช่วยแก้ปัญหาของฉันได้ ฉันไม่เคยคิดเรื่องนี้มาก่อน ขอบคุณ!
เวลา

5

ฉันพบวิธีที่ง่ายกว่าในการแก้ไขปัญหานี้ คุณไม่สามารถทำได้โดยตรงจากคราส ขั้นตอน:

  1. ไปที่โครงสร้างโฟลเดอร์พื้นที่ทำงานใน windows
  2. เปลี่ยนชื่อโฟลเดอร์
  3. รีเฟรชในคราส
  4. ตอนนี้โฟลเดอร์และไฟล์จะถูกลบออกจากโปรเจ็กต์ใน eclipse และจะปรากฏใต้โฟลเดอร์ที่เปลี่ยนชื่อใหม่
  5. ตอนนี้ลองตัวเลือก "ซิงโครไนซ์กับ Respository"

การดำเนินการนี้จะกู้คืนโฟลเดอร์ฐานข้อความใน. svnfolder Checksum ไม่ตรงกันขณะอัปเดตข้อผิดพลาดจะไม่ปรากฏขึ้นอีก


1

สิ่งนี้เกิดขึ้นกับฉันโดยใช้ปลั๊กอิน Eclipse และการซิงโครไนซ์ ไฟล์ที่ทำให้เกิดปัญหาไม่มีการเปลี่ยนแปลงภายในเครื่อง (และในความเป็นจริงแล้วไม่มีการเปลี่ยนแปลงระยะไกลตั้งแต่การอัปเดตครั้งล่าสุดของฉัน) ฉันเลือก "ย้อนกลับ" สำหรับไฟล์โดยไม่มีการแก้ไขอื่น ๆ ในไฟล์และสิ่งต่างๆก็กลับสู่สภาวะปกติ


1

ฉันมีข้อผิดพลาดเดียวกัน แต่สำหรับไฟล์เดียว ใน IntelliJ IDEA ฉันสามารถทำสำเนาไฟล์ได้จากนั้นไปที่โปรเจ็กต์และลบไฟล์ที่เป็นปัญหาจากนั้นคอมมิตสำเร็จ จากนั้นฉันสร้างไฟล์ใหม่โดยใช้ชื่อเดียวกันและคัดลอกเนื้อหากลับเข้าไป ฉันเดาว่าคุณจะสูญเสียประวัติการแก้ไข แต่ใช้งานได้


1

หากคุณมีเพื่อนร่วมงานที่ทำงานร่วมกับคุณ:

1) ขอให้เขาเปลี่ยนชื่อไฟล์ที่ทำให้เกิดปัญหาและ commit

2) คุณupdate(ตอนนี้คุณเห็นไฟล์ที่มีการตรวจสอบที่ไม่ถูกต้องด้วยชื่ออื่น)

3) เปลี่ยนชื่อกลับเป็นชื่อเดิม

4) commit(และขอให้เพื่อนร่วมงานของคุณupdateคืนชื่อไฟล์ในสถานะเริ่มต้น)

สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้


1

ผมพบว่าวิธีการแก้ปัญหาที่ดีมากที่การแก้ไขปัญหาของฉัน เคล็ดลับคือการแก้ไข svn DB (wc.db)

วิธีแก้ปัญหามีอธิบายไว้ในหน้านี้: http://www.exchangeconcept.com/2015/01/svn-e155037-previous-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

หากลิงก์ไม่ทำงานให้ดูและปฏิบัติตามคำแนะนำนี้: ใส่คำอธิบายภาพที่นี่

ผมใช้เครื่องมือ SQLite จากhttp://sqlitebrowser.org/


1

ฉันใช้ Tortoise SVN หลังจากตรวจสอบโซลูชันทั้งหมดในหน้านี้แล้วและไม่ทำงาน

ในที่สุดฉันก็สำรองไฟล์ปัญหา และใช้Repo Browserลบไฟล์ปัญหาในนั้นจากนั้นอัปเดตโฟลเดอร์ในเครื่องเพื่อให้ไฟล์ในโฟลเดอร์ภายในเครื่องถูกลบ จากนั้นคัดลอกไฟล์สำรองและAdd > Commitจากนั้นฉันสามารถอัปเดตได้สำเร็จ

ข้อเสียเดียวของวิธีนี้คือประวัติของไฟล์นี้จะถูกลบออก


0

ในการแก้ไขให้ทำตามขั้นตอนต่อไปนี้:

  1. เปิดไฟล์รายการที่อยู่ในไดเร็กทอรี. svn ที่คุณได้รับข้อผิดพลาด
  2. ค้นหารายการสำหรับไฟล์ที่ให้ข้อผิดพลาดและแทนที่ค่าที่คาดหวังด้วยค่าจริงที่ผิดพลาด
  3. ตอนนี้ซิงโครไนซ์และพยายามอัปเดต

หากยังไม่ได้ผล ลองสิ่งเหล่านี้ เป็นเพียงวิธีแก้ปัญหาเท่านั้น:

  1. ลบไฟล์ออกจากระบบของคุณ
  2. ลบรายการของไฟล์จากไฟล์รายการ (เริ่มตั้งแต่ชื่อไฟล์จนถึงอักขระพิเศษ)
  3. ตอนนี้ซิงโครไนซ์และอัปเดตไฟล์

สิ่งนี้จะได้รับไฟล์เวอร์ชันล่าสุดจากที่เก็บและข้อขัดแย้งทั้งหมดจะได้รับการแก้ไข


0

มีปัญหาที่คล้ายกันบนเซิร์ฟเวอร์ แต่ไดเรกทอรี SVN มีขนาดใหญ่มากไม่ต้องการลบและซิงค์ใหม่ดังนั้นฉันจึงทำสำเนาไฟล์ในเครื่องแล้วลบออก เมื่ออัปเดตสำเร็จและเพิ่มไฟล์กลับเข้าไป


0

พยายามลบไฟล์และลบการอ้างอิงไฟล์ออกจากรายการไฟล์ภายใต้ไดเร็กทอรี. svn


0

ฉันพบข้อผิดพลาดที่คล้ายกันและได้รับการแก้ไขดังนี้:

('การแก้ไข' ของฉันตั้งอยู่บนสมมติฐานซึ่งอาจจะถูกต้องหรือไม่ก็ได้เนื่องจากฉันไม่รู้ว่าการโค่นล้มนั้นทำงานอย่างไรภายใน แต่มันใช้ได้ผลกับฉันอย่างแน่นอน)

ฉันสมมติว่า. svn \ text-base \ import.php.svn-base คาดว่าจะตรงกับคอมมิตล่าสุด

เมื่อฉันตรวจสอบไฟล์ที่พบข้อผิดพลาดไฟล์ฐานไม่ตรงกับการคอมมิตล่าสุดในที่เก็บ

ฉันคัดลอกข้อความจากการกระทำล่าสุดและบันทึกไว้ในโฟลเดอร์. svn โดยแทนที่ไฟล์ที่ไม่ถูกต้อง (ทำสำเนาสำรองในกรณีที่สมมติฐานของฉันผิด) (ไฟล์ถูกทำเครื่องหมายว่าอ่านอย่างเดียวฉันล้างค่าสถานะนั้นเขียนทับและตั้งค่าให้กลับเป็นอ่านอย่างเดียว)

จากนั้นฉันก็สามารถทำสำเร็จได้


0

วิธีแก้ปัญหาของฉันคือ:

  1. ดำเนินการล้างข้อมูล svn จากระบบไฟล์
  2. เปลี่ยนไปใช้สาขาอื่น
  3. แก้ปัญหาความขัดแย้ง
  4. เปลี่ยนเป็นสาขา "ที่มีปัญหา"
  5. ดำเนินการล้างข้อมูลจาก Spring Tool Suite
  6. ดำเนินการอัปเดตโครงการ

0

1. 'อัปเดตเพื่อย้อนกลับ' ตรวจสอบ 'เฉพาะรายการนี้' ภายใต้ไดเรกทอรี 2. อัปเดตอีกครั้งตรวจสอบ 'เรียกซ้ำเต็ม'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.