ฉันควรทำอย่างไรเมื่อ 'svn cleanup' ล้มเหลว


245

ฉันมีการเปลี่ยนแปลงมากมายในโฟลเดอร์ที่ใช้งานได้และมีบางอย่างผิดพลาดในการพยายามอัปเดต

ตอนนี้เมื่อฉันออก 'svn cleanup' ฉันจะได้รับ:

>svn cleanup .
svn: In directory '.'
svn: Error processing command 'modify-wcprop' in '.'
svn: 'MemPoolTests.cpp' is not under version control

MemPoolTests.cpp เป็นไฟล์ใหม่ที่นักพัฒนาคนอื่นเพิ่มและนำมาลงในการปรับปรุง ไม่มีอยู่ในโฟลเดอร์การทำงานของฉันมาก่อน

มีอะไรที่ฉันสามารถทำได้เพื่อพยายามและเดินหน้าต่อไปโดยไม่ต้องเช็กเอาสำเนาใหม่ของที่เก็บ?

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

ฉันหวังว่าจะมีวิธีการล้างข้อมูลที่ก้าวร้าวมากขึ้นบางทีอาจเป็นการบังคับให้ไฟล์ SVN กำลังมีปัญหากลับสู่สถานะที่ทราบ (และฉันพยายามลบสำเนาที่ใช้งานได้ของมัน ... ที่ไม่ได้ช่วย)


เรื่องการใช้สำเนาใหม่ คว้าสำเนาของการเปรียบเทียบเพื่อให้ได้รุ่นที่แตกต่างกัน
Jon Winstanley

2
วิธีการแก้ปัญหาของอามินไม่ได้ผลสำหรับคุณหรือไม่? แน่นอนคำตอบที่ชัดเจนที่จะยอมรับเป็นอย่างอื่น?
อลิซเพอร์เซลล์

2
ตรวจสอบให้แน่ใจว่าไฟล์ใด ๆ ที่ไม่ได้ถูกเปิดโดยแอพพลิเคชั่นมันลืมได้ง่าย Process Explorer และค้นหาอย่างรวดเร็วในเส้นทางที่เป็นประโยชน์อย่างมากในการค้นพบนี้: technet.microsoft.com/en-us/sysinternals/bb896653.aspx
angularsen

4
IMHO การมีอยู่ของคำสั่ง "svn cleanup" เป็นการยอมรับความล้มเหลว
yoyo

คำตอบ:


223

เมื่อเริ่มต้นใหม่ทั้งหมดไม่ใช่ตัวเลือก ...

ฉันลบไฟล์บันทึกใน.svnไดเรกทอรี (ฉันลบไฟล์ที่ละเมิดด้วย.svn/props-base) ทำการล้างข้อมูลและดำเนินการอัพเดตต่อ


3
ฉันได้รับปัญหาที่คล้ายกับคำถามเดิมที่นี่ (เนื่องจากการชำระเงิน svn ขัดจังหวะ) สิ่งนี้แก้ไขได้สำหรับฉัน แม้ว่าฉันต้องไปยังไดเรกทอรีหลักและทำเช่นเดียวกัน
ไนเจลฮอว์กิน

2
+1 ฉันไม่สามารถบอกคุณได้ว่าฉันเคยอยู่ในสถานการณ์นี้มากี่ครั้งแล้ว เมื่อเป็นโฟลเดอร์ย่อยจะไม่มีปัญหาเพียงแค่ลบทั้งโฟลเดอร์ล้างและอัปเดต แต่เมื่อมันเป็นไฟล์ในระดับรูทนี่ไม่ใช่ตัวเลือกที่ถูก (หลายชั่วโมงในการเช็คเอาต์โครงการทั้งหมดอีกครั้ง) Fantastic Tip - ขอบคุณมาก
Ewan Makepeace

9
สำหรับฉันแล้วการลบไฟล์ล็อคก็ทำได้ อาจเป็นที่สนใจของใครบางคน คุณสามารถลบมันซ้ำด้วยคำสั่งต่อไปนี้: rm -rffind . -type f -name lock
H6

1
คำสั่งของ happy-coding ไม่ทำงาน สิ่งนี้:sudo rm -rf | find . -type f -name lock
Zachary Schuessler

2
ฉันหาไม่พบ.svn/prop-baseฉันมี.svn/[pristine|tmp|entries|format|wc.db]
bigpony

112

สิ่งต่าง ๆ ได้เปลี่ยนไปด้วย SVN 1.7 และวิธีแก้ปัญหายอดนิยมในการลบไฟล์บันทึกในไดเรกทอรี. svn นั้นไม่สามารถทำได้เมื่อย้ายไปยังฐานข้อมูลที่ใช้การคัดลอกได้

นี่คือสิ่งที่ฉันทำที่ดูเหมือนจะใช้ได้:

  1. ลบไดเรกทอรี. svn สำหรับสำเนาการทำงานของคุณ
  2. เริ่มการชำระเงินใหม่ในไดเรกทอรีชั่วคราวใหม่
  3. ยกเลิกการชำระเงิน (เราไม่ต้องการรอให้ทุกอย่างถูกดึงลงมา)
  4. เรียกใช้การล้างข้อมูลบนเช็คเอาต์ที่ยกเลิกนี้
  5. ตอนนี้เรามีไดเรกทอรี. svn ใหม่ที่มีฐานข้อมูลสะอาด (แม้ว่าจะไม่มีไฟล์ / ไฟล์ไม่กี่ไฟล์)
  6. คัดลอก. svn นี้ไปยังไดเรกทอรีทำงานเก่าที่เสียหาย
  7. เรียกใช้การอัปเดต svn และควรทำให้ไดเรกทอรี. svn บางส่วนใหม่ของคุณเร็วขึ้นด้วยไดเรกทอรีการทำงานเก่าของคุณ

นั่นคือทั้งหมดที่กระบวนการสับสนเล็กน้อยที่ชาญฉลาด โดยพื้นฐานแล้วสิ่งที่เรากำลังทำอยู่คือการลบ. svn ที่เสียหายแล้วสร้าง. svn ใหม่สำหรับเส้นทางการชำระเงินเดียวกัน จากนั้นเราย้าย. svn ใหม่ไปยังไดเรกทอรีการทำงานเก่าของเราและอัปเดตเป็น repo

ฉันเพิ่งทำสิ่งนี้ใน TSVN และดูเหมือนว่าจะทำงานได้ดีและไม่ต้องการการชำระเงินเต็มและดาวน์โหลด

-Jody


8
ฉันดูเหมือนจะทำอย่างน้อยสองครั้งต่อเดือน ช่างเป็นความเจ็บปวด ทีม svn ควรเพิ่มขั้นตอนเหล่าsvn cleanup --forceนี้ และแน่นอนว่าการเพิ่มลบและ (ที่มี 1.8) การดำเนินการเปลี่ยนชื่อจะหายไป
Martin

2
@Adgezaza ใช่ ใช่แล้ว.
mjs

1
การแก้ไขนี้สำหรับฉัน มันแตกต่างกันเล็กน้อย: หลังจากเปลี่ยน svn แล้วการอัปเดตล้มเหลวสำหรับโฟลเดอร์เฉพาะ 1 โฟลเดอร์ ลบโฟลเดอร์นั้นและทุกอย่างเรียบร้อยดี
ลองยาว

@Pup ควรจะ โดยพื้นฐานแล้วคุณเพียงแค่ดึงข้อมูลเมตาลงเพื่อเช็คเอาต์ใหม่จากนั้นเติมด้วยไฟล์ SVN จะพิจารณาว่าไฟล์ตรงกับข้อมูลเมตาหรือไม่ แต่คุณรู้มั้ยซิปทุกอย่างขึ้นมาก่อนในกรณี ...
JKoplo

1
ฉันติดตั้ง SVN ใหม่อีกครั้ง (Tortoise SVN 1.8) เปิดเผยทุกโฟลเดอร์ svn จากโครงการของฉันจากนั้นทำการดำเนินการที่กล่าวถึงที่นี่และ voila! ขอบคุณผู้เขียน!
Dmitry

110

ลองดูที่

http://www.anujvarma.com/svn-cleanup-failedprevious-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

สรุปการแก้ไขจากลิงค์ด้านบน (ขอบคุณ Anuj Varma)

  1. ติดตั้งเชลล์บรรทัดคำสั่ง sqlite (sqlite-tools-win32) จาก http://www.sqlite.org/download.html

  2. sqlite3 .svn/wc.db "select * from work_queue"

SELECT ควรแสดงโฟลเดอร์ / ไฟล์ที่ไม่เหมาะสมของคุณเป็นส่วนหนึ่งของคิวงาน สิ่งที่คุณต้องทำคือลบรายการนี้ออกจากคิวงาน

  1. sqlite3 .svn/wc.db "delete from work_queue"

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


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

8
Firefox มีตัวจัดการ sqliteซึ่งสามารถเปิดและแก้ไขไฟล์. svn / wc.db จัดเตรียม GUI ที่สะดวกในการดำเนินการเทียบเท่าบน work_queue
นักมายากล

หากคุณมี SVN และ Firefox เวอร์ชันล่าสุด addon sqlite manager จะจัดการกับปัญหานี้ใน 30 วินาที ไม่ต้องกังวลกับการลบไดเรกทอรีหรือใช้ Repobrowser ในปี 2559 ฉันคิดว่านี่น่าจะเป็นคำตอบที่ยอมรับ
อนุญาโตตุลาการ

5
สำหรับฉันใช้ 'ลบจาก WC_LOCK;' ก็จำเป็นเช่นกัน
Tristan.Liu

ทำงานอย่างสมบูรณ์แบบ! Svn sucks! แต่หลังจากลบจาก work_queue svn ให้ฉันข้อผิดพลาดอื่น ๆ "svn ล็อค" เพียงแค่เรียกใช้กับเต่า (คราสไม่มีตัวเลือก) ล้างด้วย "เบรกล็อค" ตรวจสอบ
amdev

42

หากล้มเหลวทั้งหมด:

  1. ลองดูที่โฟลเดอร์ใหม่
  2. คัดลอกไฟล์ที่คุณแก้ไขไป
  3. เช็คอินใหม่
  4. ซิปโฟลเดอร์เก่าไว้ที่ใดที่หนึ่ง (คุณไม่เคยรู้ว่า + หวาดระแวงดี) ก่อนที่จะลบมันและใช้โฟลเดอร์ใหม่

27

verion ล่าสุด (ฉันใช้ 1.9.5) แก้ปัญหานี้ได้โดยการเพิ่มตัวเลือก "หยุดล็อค" บนเมนูล้างข้อมูล เพียงตรวจสอบให้แน่ใจว่าได้เลือกช่องทำเครื่องหมายนี้เมื่อทำการล้างข้อมูล

ทำความสะอาดหน้าต่าง


ดูเหมือนชัดเจนมากตอนนี้! ขอบคุณ
Billy Jake O'Connor

ทำงานเหมือนจับใจ!
Viswanath

ทำงานได้ดีสำหรับฉัน
Sergey

ทำงาน! เมื่อฉันเห็นวิธีการแก้ปัญหานี้ฉันรู้ทันทีว่าปัญหาคืออะไร (ฉันคิดว่า): ฉันยังมี excel เปิดอยู่ซึ่งปรับเปลี่ยนมัน ฉันต้องการที่จะส่งมอบการเปลี่ยนแปลงของฉันไปยังไฟล์ java บางไฟล์และเห็นไฟล์ excel และเป็นเหมือน "ฉันไม่ได้เปลี่ยนใด ๆ ที่นั่น ... เปลี่ยนกลับ" ซึ่งใช้งานไม่ได้แล้วฉันก็รู้ว่ามันยังคงเปิดอยู่ปิดมัน F5 ไม่ปรากฏในการกระทำอีกต่อไป จากนั้นมันก็บอกฉันว่า "ได้โปรดล้างข้อมูล" และจากนั้นฉันติดอยู่ ขอบคุณมาก! :)
BAERUS

16

คำตอบนี้ใช้ได้เฉพาะกับรุ่นก่อน 1.7 (ขอบคุณ @ ŁukaszBachman)ŁukaszBachman)

การโค่นล้มเก็บข้อมูลต่อโฟลเดอร์ (ใน. svn) ดังนั้นหากคุณเพิ่งจัดการกับโฟลเดอร์ย่อยคุณไม่จำเป็นต้องชำระเงินที่เก็บข้อมูลทั้งหมด - เพียงแค่โฟลเดอร์ที่มีบอร์ก:

cd dir_above_borked
mv borked_dir borked_dir.bak
svn update borked_dir

สิ่งนี้จะให้สำเนาที่ทำงานได้ดีของโฟลเดอร์ borked แต่คุณยังคงสำรองข้อมูลการเปลี่ยนแปลงไว้ใน borked_dir.bak หลักการเดียวกันนี้ใช้กับ Windows / TortoiseSVN

หากคุณมีการเปลี่ยนแปลงในโฟลเดอร์ที่แยกได้ดูที่

svn checkout -N borked_dir   # Non-recursive, but deprecated

หรือ

svn checkout --depth=files borked_dir
# 'depth' is new territory to me, but do 'svn help checkout'

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

สิ่งนี้ได้ผลสำหรับฉัน - ทั้งหมดที่ฉันทำคือsvn uprepo เดียวกับที่อยู่ตรงกลางของsvn upแท็บอื่น - ฉันลืมว่าฉันได้ทำไปแล้วและปล่อยให้มันไม่สมบูรณ์เมื่อคืนก่อน
Jon z

ไม่เป็นความจริงอีกต่อไป - ด้วยเวอร์ชันล่าสุด SVN กำลังใช้.svnไดเรกทอรีเดียว
ŁukaszBachman


6

ฉันมีปัญหาเดียวกันแน่นอน ฉันไม่สามารถกระทำได้และการล้างข้อมูลล้มเหลว

การใช้ไคลเอ็นต์บรรทัดคำสั่งฉันสามารถเห็นข้อความแสดงข้อผิดพลาดที่ระบุว่าไม่สามารถย้ายไฟล์จาก.svn/propsไปยังได้.svn/prop-baseได้

ฉันดูไฟล์เฉพาะและพบว่ามีการทำเครื่องหมายว่าอ่านอย่างเดียว หลังจากลบคุณลักษณะอ่านอย่างเดียวฉันสามารถล้างโฟลเดอร์และกำหนดการเปลี่ยนแปลงของฉันได้


ฉันยอมแพ้บนต้นไม้ต้นนั้นและได้ต้นไม้ใหม่ในที่สุด แต่ขอขอบคุณสำหรับคำแนะนำในการตรวจสอบในครั้งต่อไป
Rob Walker

ฮ่า ... ฉันยังเปลี่ยนชื่อโฟลเดอร์ในพื้นที่. svn \ pristine จาก {name} เป็น {name} _old จากนั้นกลับไปเป็น {name} ดั้งเดิมและใช้งานได้
beauXjames

5

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

ปัจจุบัน Windows (เช่นเส็งเคร็ง) filesystems ก็ไม่ grok ความแตกต่างระหว่างและFilename FILEnameคุณมีการแก้ไขที่เป็นไปได้สองประการ:

  1. ตรวจสอบที่แพลตฟอร์มด้วยระบบไฟล์จริง (อิง Unix) เปลี่ยนชื่อไฟล์และยอมรับการเปลี่ยนแปลง
  2. เมื่อคุณมีสต็อกเป็น Windows คุณสามารถเปลี่ยนชื่อไฟล์ในเบราว์เซอร์ที่เก็บ Eclipse SVN ซึ่งรับรู้ถึงความแตกต่างและเปลี่ยนชื่อไฟล์ที่นั่น
  3. คุณสามารถเปลี่ยนชื่อไฟล์ที่มีปัญหาจากระยะไกลได้จากไคลเอนต์ SVN บรรทัดคำสั่งใด ๆ ที่ใช้ svn rename -m "broken filename case" http://server/repo/FILEname http://server/repo/filename

นี่กลายเป็นปัญหาของฉัน ผู้ร่วมงานได้ทำการตรวจสอบไฟล์โครงการ Xcode หลายไฟล์แต่ละไฟล์ที่มีสองชุดต่างกันเป็นตัวอักษรเท่านั้น ฉันใช้ TortoiseSVN เพื่อเรียกดู repo และลบไฟล์พิเศษ จากนั้นฉันก็ลบโฟลเดอร์ในเครื่องของฉันที่มีไฟล์ที่ซ้ำกันและการปรับปรุง svn ก็ประสบความสำเร็จในที่สุด
kgriffs

ไม่ใช่แค่เรื่องของ Windows สิ่งนี้มีผลกับ Mac ด้วยเช่นกัน ระบบไฟล์ Macs HFS + โดยค่าเริ่มต้นจะคำนึงถึงขนาดตัวพิมพ์และตัวพิมพ์เล็ก แต่กรณีการรักษาชื่อไฟล์ ฉันได้ตั้งค่าพาร์ติชั่นที่สองในฮาร์ดไดรฟ์ของฉันซึ่งเป็นชื่อไฟล์ที่คำนึงถึงขนาดตัวพิมพ์
David W.

4

รันsvn cleanupคำสั่งในเทอร์มินัล (หากล้มเหลวจาก Eclipse ซึ่งเป็นกรณีของฉัน):

~/path/to/svn-folder/$ svn cleanup

ฉันพยายามอธิบายวิธีแก้ไขปัญหาต่าง ๆที่นี่ แต่ไม่มีใครทำงานได้

Action Team →การอัปเดตที่ส่วนหัวล้มเหลว

svn: E155004: มีรายการงานที่ยังไม่เสร็จใน '/ home / user / path / to / svn-folder'; เรียกใช้ 'svn cleanup' ก่อน

Action TeamCleanupล้มเหลวโดยมีข้อผิดพลาดเดียวกัน

วิธีการแก้ปัญหาที่ทำงานสำหรับฉัน: เรียกใช้ทำความสะอาด SVNคำสั่งในขั้ว

คำสั่งสำเร็จ

จากนั้นอัปเดตทีม in Eclipse ทำงานได้อีกครั้ง

หมายเหตุ: เวอร์ชัน SVN ของฉันคือ 1.9.3

ตรวจสอบคำตอบของ Chrisถ้าsvn cleanupไม่ได้ผล


3

ฉันพยายามทำsvn cleanupผ่านคอนโซลและมีข้อผิดพลาดเช่น:

svn: E720002: Can't open file '..\.svn\pristine\40\40d53d69871f4ff622a3fbb939b6a79932dc7cd4.svn-base':
The system cannot find the file specified.

ดังนั้นฉันสร้างไฟล์นี้ด้วยตนเอง (ว่าง) และทำsvn cleanupอีกครั้ง คราวนี้มันก็โอเค


3

ผมมีปัญหาเหมือนกัน. สำหรับฉันสาเหตุคือความขัดแย้งกับ EasySVN และ (TortoiseSVN หรือเพียงแค่ SVN) ฉันอัปเดตอัตโนมัติและคอมมิชชันกับ EasySVN (ซึ่งไม่ทำงาน)

เมื่อฉันปิดสิ่งนี้ฉันไม่สามารถล้างกระทำหรืออัปเดตได้ วิธีการแก้ปัญหาข้างต้นไม่ได้ผล แต่ได้ทำการรีบูตเครื่อง :)


Yaaaaay jimi คุณคือฮีโร่ของฉัน (ใน)
Troa

2

ฉันเพิ่งมีปัญหาเดียวกันนี้ใน Windows 7 64 บิต ฉันรันคอนโซลในฐานะผู้ดูแลระบบและลบไดเรกทอรี. svn ออกจากไดเรกทอรีปัญหา (มีข้อผิดพลาดเกี่ยวกับบันทึกหรือบางสิ่ง แต่ไม่สนใจ) จากนั้นใน explorer ฉันลบไดเรกทอรีปัญหาซึ่งไม่แสดงภายใต้การควบคุมเวอร์ชันอีกต่อไป จากนั้นฉันรันการอัปเดตและดำเนินการต่อตามที่คาดไว้


2

หากปัญหาคือความไวของตัวพิมพ์เล็ก (ซึ่งอาจเป็นปัญหาเมื่อตรวจสอบกับ Mac รวมถึง Windows) และคุณไม่มีตัวเลือกในการตรวจสอบระบบ * nix สิ่งต่อไปนี้ควรใช้งานได้ นี่คือกระบวนการตั้งแต่ต้น:

% svn co http://[domain]/svn/mortgages mortgages

(ชำระเงินดำเนินการ…จากนั้น…)

svn: In directory 'mortgages/trunk/images/rates'
svn: Can't open file 'mortgages/trunk/images/rates/.svn/tmp/text-base/Header_3_nobookmark.gif.svn-base': No such file or directory

นี่ SVN พยายามที่จะตรวจสอบทั้งสองไฟล์ที่มีชื่อคล้ายกันที่แตกต่างกันโดยเฉพาะกรณี - และHeader_3_noBookmark.gif Header_3_nobookmark.gifระบบไฟล์ของ Mac เริ่มต้นที่จะไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ในลักษณะที่ทำให้ SVN ทำให้หายใจไม่ออกในสถานการณ์เช่นนี้ ดังนั้น...

% cd mortgages/trunk/images/rates/
% svn up
svn: Working copy '.' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)

อย่างไรก็ตามการวิ่งsvn cleanupไม่ได้ผลอย่างที่เรารู้

% svn cleanup
svn: In directory '.'
svn: Error processing command 'modify-wcprop' in '.'
svn: 'spacer.gif' is not under version control

spacer.gifไม่ใช่ปัญหาที่นี่ ... ไม่สามารถย้ายข้อผิดพลาดก่อนหน้าไปยังไฟล์ถัดไป ดังนั้นฉันจึงลบไฟล์ทั้งหมดจากไดเรกทอรีอื่นที่ไม่ใช่.svnและลบบันทึก SVN นี่ทำให้การล้างข้อมูลใช้งานได้เพื่อที่ฉันจะได้ตรวจสอบและเปลี่ยนชื่อไฟล์ที่ละเมิด

% rm *; rm -rf .svn/log; svn cleanup
% svn up Header_3_nobookmark.gif
A    Header_3_nobookmark.gif
Updated to revision 1087.
% svn mv Header_3_nobookmark.gif foo
A         foo
D         Header_3_nobookmark.gif
% svn up
A    spacer.gif
A    Header_3_noBookmark.gif

ติดตามสิ่งนี้ฉันสามารถกลับไปที่ไดเรกทอรีรากของโครงการและเรียกใช้svn upเพื่อตรวจสอบส่วนที่เหลือของโครงการ


2

เมื่อใดก็ตามที่ฉันมีปัญหาที่คล้ายกันฉันใช้ rsync (NB: ฉันใช้ Linux หรือ Mac OS X) เพื่อช่วยออกดังนี้:

# Go to the parent directory
cd dir_above_borked

# Rename corrupted directory
mv borked_dir borked_dir.bak

# Checkout a fresh copy
svn checkout svn://... borked_dir

# Copy the modified files to the fresh checkout
# - test rsync
#   (possibly use -c to verify all content and show only actually changed files)
rsync -nav --exclude=.svn borked_dir.bak/ borked_dir/

# - If all ok, run rsync for real
#   (possibly using -c again, possibly not using -v)
rsync -av --exclude=.svn borked_dir.bak/ borked_dir/

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


2

ฉันวิ่งเข้าไปในนั้นเมื่อเร็ว ๆ นี้ เคล็ดลับสำหรับฉันคือหลังจากเลือก "Clean up" ในกล่องโต้ตอบตัวเลือกป๊อปอัปตรวจสอบ "Break Locks" แล้วเลือก "OK" มันทำความสะอาดเรียบร้อยแล้วสำหรับฉัน


1
SVN ไม่มีกล่องโต้ตอบแบบป๊อปอัป บางทีคุณกำลังใช้ Tortoise OP กำลังใช้ไคลเอ็นต์บรรทัดคำสั่งดังนั้นคำแนะนำของคุณจึงไม่เป็นประโยชน์
Robert

1

Subclipse สับสนโดยพฤติกรรมการล็อคที่โหดร้ายของ Windows อย่างแท้จริง Unlockerเป็นเพื่อนของคุณ นี่สามารถค้นหาไฟล์ที่ถูกล็อคและบังคับให้ทำการปลดล็อค


1

(ก่อนที่คุณจะลองย้ายโฟลเดอร์และชำระเงินใหม่)

ลบโฟลเดอร์ที่มีไฟล์ที่ละเมิดอยู่ - ใช่แม้กระทั่ง.svnโฟลเดอร์จากนั้นทำsvn cleanupโฟลเดอร์บนสุด / โฟลเดอร์หลัก


1

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


1

เมื่อฉันประสบปัญหานี้กับ TortoiseSVN (Windows) ฉันไปที่Cygwinและเรียกใช้ ' svn cleanup ' จากตรงนั้น มันทำความสะอาดอย่างถูกต้องสำหรับฉันหลังจากนั้นทุกอย่างทำงานจาก TortoiseSVN


สิ่งนี้สามารถใช้งานได้กับหน้าต่างคำสั่ง ฉันไม่รู้ว่าทำไมมันถึงทำงานได้เมื่อ Tortoise ล้มเหลว แต่บางครั้งก็ทำ
Watusimoto

0

คำตอบที่นี่ไม่ได้ช่วยฉัน แต่ก่อนที่จะตรวจสอบโครงการอีกครั้งฉันปิดและเปิด Eclipse (ล้มล้างเป็นลูกค้า SVN ของฉัน) และปัญหาหายไป


0

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

(ฉันลองดาวน์โหลดอีกครั้ง แต่เช็คเอาต์ไปยังไดเรกทอรีที่สะอาดอยู่เสมอที่จุดเดียวกัน)


0

บางครั้งการล็อกแบบอ่านอย่างเดียวเกิดขึ้นกับไดรฟ์เครือข่ายที่มี Windows ลองยกเลิกการเชื่อมต่อแล้วเชื่อมต่อใหม่อีกครั้ง จากนั้นล้างและอัปเดต


0

หลังจากผ่านการแก้ปัญหาส่วนใหญ่ที่อ้างถึงที่นี่ฉันยังคงได้รับข้อผิดพลาด

ปัญหานี้เกิดขึ้นกับ OS X ที่เล็กและใหญ่ การตรวจสอบไดเรกทอรีที่มีสองไฟล์ที่มีชื่อเหมือนกัน แต่การใช้อักษรตัวพิมพ์ใหญ่ต่างกันทำให้เกิดปัญหา ตัวอย่างเช่น ApproximationTest.java และ Approximationtest.java ไม่ควรอยู่ในไดเรกทอรีเดียวกัน ทันทีที่เรากำจัดไฟล์ใดไฟล์หนึ่งปัญหาจะหายไป


0

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

#>svn st
!       my_dir
!       my_dir\sub_dir

svn cleanup, svn revert,svn updateและsvn resolveทุกคนประสบความสำเร็จในการแก้ไขนี้

ในที่สุดฉันก็แก้ปัญหาดังต่อไปนี้:

  • ค้นหาในไดเรกทอรี. svn เพื่อหา "sub_dir"
  • ใช้ RC -> Properties เพื่อยกเลิกการเลือกแฟล็ก 'read only' ในไฟล์รายการ
  • เปิดไฟล์รายการและลบบรรทัด "เสร็จ ... " และการตรวจสอบที่สอดคล้องกัน
  • บันทึกและเปิดใช้งานการตั้งค่าสถานะอ่านอย่างเดียวอีกครั้ง
  • ทำซ้ำสำหรับไดเรกทอรี my_dir

หลังจากนั้นทุกอย่างก็โอเค

หมายเหตุฉันไม่มีการเปลี่ยนแปลงในพื้นที่ดังนั้นฉันไม่รู้ว่าคุณจะเสี่ยงหรือไม่ถ้าคุณทำ ฉันไม่ได้ใช้วิธีการลบ / อัปเดตที่แนะนำโดยผู้อื่น - ฉันเข้าสู่สถานะนี้ด้วยการลองในไดเรกทอรี my_dir / sub_dir / sub_sub_dir (ซึ่งเริ่มต้นด้วยอาการเดียวกัน) - ดังนั้นฉันจึงไม่ต้องการเสี่ยงที่จะทำสิ่งต่าง ๆ ให้แย่ลง อีกครั้ง!

ไม่ได้อยู่ในหัวข้อ แต่อาจมีประโยชน์ถ้ามีคนเจอโพสต์นี้เหมือนที่ฉันทำ


0

ไม่ไม่ไม่! หากคุณใช้ SVN 1.7 หรือสูงกว่าคำสั่ง cleanup ควรทำงาน!

ฉันทำการทดลองบางอย่างและพบว่าโซลูชัน (อย่างน้อยในEclipse ) กำลังดำเนินการล้างข้อมูลสำหรับโฟลเดอร์ที่ระบุในข้อความแสดงข้อผิดพลาดไม่ใช่โครงการทั้งหมด!


สิ่งนี้ใช้ได้กับฉันในวันนี้ดังนั้นฉันจะ +1 ในทางกลับกันเวลาที่ฉันเข้าสู่วงวนนั้นเป็นสิ่งที่ตรงกันข้าม - ฉันคลิกขวาที่โฟลเดอร์และเลือก "ล้างข้อมูล" เมื่อฉันต้องการคลิกขวาบนพื้นที่ว่างแทน ดังนั้นมันขึ้นอยู่กับสถานการณ์ที่เฉพาะเจาะจงเป็นอย่างมาก
Daphne B

downvote เนื่องจากคำตอบของ "ฉันจะแก้ไขสิ่งต่าง ๆ ได้อย่างไรเมื่อการล้างข้อมูลบน svn ล้มเหลว" ไม่ใช่ "ควรทำงาน"
mjs

0

ฉันsudo chmod 777 -R .จะสามารถเปลี่ยนการอนุญาตได้ ไม่มีsudoมันจะไม่ทำงานให้ฉันข้อผิดพลาดเดียวกับการใช้คำสั่งอื่น ๆ

ตอนนี้คุณสามารถทำsvn updateอะไรก็ได้โดยไม่ต้องทำให้ไดเรกทอรีทั้งหมดของคุณเสียใหม่และสร้างมันขึ้นมาใหม่ สิ่งนี้มีประโยชน์เป็นพิเศษเนื่องจาก IDE หรือโปรแกรมแก้ไขข้อความของคุณอาจเปิดแท็บบางตัวอยู่แล้วหรือมีปัญหาในการซิงค์ คุณไม่จำเป็นต้องทำให้เสียและแทนที่ไดเรกทอรีการทำงานของคุณด้วยวิธีนี้


0

ฉันแก้ไขปัญหานี้โดยการคัดลอกไดเรกทอรี. svn ของเพื่อนร่วมงานไปยังของฉันแล้วอัปเดตสำเนาการทำงานของฉัน มันเป็นทางออกที่ดีรวดเร็วและสะอาด


0

มีคำแนะนำที่ดีมากในคำตอบก่อนหน้านี้ แต่ถ้าคุณมีปัญหากับ TortoiseSVN บน Windows (ผลิตภัณฑ์ที่ดี แต่ ... ) มักจะย้อนกลับไปที่บรรทัดคำสั่งและทำ "svn cleanup" อย่างง่าย ๆ ก่อน

ในหลาย ๆ กรณีไคลเอนต์ Windows จะไม่เรียกใช้คำสั่งล้างข้อมูล แต่การล้างข้อมูลทำงานได้ดีโดยใช้ยูทิลิตีบรรทัดคำสั่ง SVN


0

ในขณะที่เผชิญกับปัญหาที่คล้ายกันการผสานด้วยตนเองในมุมมองการซิงค์พื้นที่เก็บข้อมูลช่วยในการแก้ปัญหา

ชื่อไฟล์หนึ่งชื่อมีความขัดแย้งกับชื่ออื่นและมันได้กล่าวถึงปัญหาอย่างชัดเจน การเปลี่ยนชื่อไฟล์ที่ใหม่กว่าไปเป็นชื่ออื่นได้รับการแก้ไข

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