สำเนาการทำงาน XXX ถูกล็อคและการล้างข้อมูลล้มเหลวใน SVN


582

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันsvn update:

Working copy XXXXXXXX ถูกล็อคกรุณาเรียกใช้คำสั่ง "Cleanup"

เมื่อฉันล้างข้อมูลฉันได้รับ

การล้างข้อมูลล้มเหลวในการประมวลผลเส้นทางต่อไปนี้: XXXXXXXX

ฉันจะออกจากวงนี้ได้อย่างไร


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

การติดตามความคิดเห็น eakkas เพื่อลบรายการออกจากตาราง WORK_QUEUE โดยใช้ตัวจัดการ SQLLite ของ Firefox ได้แก้ไขปัญหาให้ฉันแล้ว
Zeppelin

12
มีคำตอบง่ายๆเพียงตรวจสอบตัวเลือก "ล็อคหยุด" และที่จะทำความสะอาดสำเนาการทำงานของคุณ
Farhan

คำตอบ:


517

แนวทางหนึ่งคือ:

  1. คัดลอกรายการที่แก้ไขไปยังตำแหน่งอื่น
  2. ลบโฟลเดอร์ที่มีเส้นทางของปัญหา
  3. อัปเดตโฟลเดอร์ที่มีผ่านการโค่นล้ม
  4. คัดลอกไฟล์ของคุณกลับหรือผสานการเปลี่ยนแปลงตามต้องการ
  5. ผูกมัด

อีกตัวเลือกหนึ่งคือลบโฟลเดอร์ระดับบนสุดและลองอีกครั้ง หวังว่ามันจะไม่เป็นเช่นนั้น


123
+1 ให้กับคุณสำหรับวิธีแก้ปัญหานี้เพื่อแก้ไขไม่เพียง แต่ปัญหาของ OP (และของฉัน) แต่ยังให้ขั้นตอน 5 ขั้นตอนที่ดูเหมือนจะแก้ไขปัญหา svn ใด ๆ -1 ถึงการโค่นล้มสำหรับการแก้ปัญหาดังกล่าวที่จำเป็น
pxl

34
ในขณะที่เทคนิคนี้ใช้งานได้มันเป็นวิธีที่ดีในการทำเช่นนี้เมื่อเทียบกับการลบการล็อคที่สมควรได้รับ downvote
Jukka Dahlbom

8
ฉันไม่สามารถทำขั้นตอนที่ 3 ได้เพราะ ... "สำเนาการทำงานถูกล็อคอยู่แล้ว"
Evgeny

20
ลองพิจารณาคำแนะนำจาก BradS "สำหรับฉันเคล็ดลับคือเรียกใช้ 'การล้างข้อมูล svn' ที่ด้านบนของสำเนาการทำงานของฉันไม่ใช่ในโฟลเดอร์ที่ฉันทำงานตลอดเวลาก่อนที่ปัญหาจะเกิดขึ้น"
มาร์โก

5
สำหรับผู้ที่ใช้ Tortoise SVN คุณสามารถเรียกใช้ล้างข้อมูลในโฟลเดอร์รูทของไดเรกทอรีเช็คเอาต์และบังคับให้ Break Locks นอกจากนี้คุณสามารถขอให้ลบไฟล์ที่ไม่มีเวอร์ชันได้ จากนั้นทำการอัปเดต
Obaid

476

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


ปกติแล้วจะใช้งานได้ แต่ไม่ได้อีกต่อไปไม่แน่ใจว่าเป็นเพราะฉันอัปเกรดเป็น SVN 1.7
Populus

4
สิ่งนี้ใช้ได้กับฉันโดยมีไคลเอ็นต์ที่ใช้ 1.7 แม้ว่าเซิร์ฟเวอร์ยังคงเป็น 1.6.x
Mark Hosang

ทำงานให้ฉันใน 1.7 ชื่นชมมาก
scarpacci

1
ฉันได้รวมคำใบ้จากคำตอบของ Intu กับไฟล์นี้: มองหาโฟลเดอร์พาเรนต์ที่มีไฟล์ "ล็อค" ในโฟลเดอร์. svn จากนั้นเรียกใช้ "svn cleanup" ที่นั่น ที่ทำงานให้ฉัน
rob74

5
วิธีนี้ใช้ได้ผลสำหรับฉันเร็วกว่าวิธีของชัคมาก ดังนั้นจึงคุ้มค่าที่จะทำสิ่งนี้ก่อน
goamn

210

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

find . -name 'lock' -exec rm -v {} \;

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

แหล่งที่มา: http://www.svnforum.org/2017/viewtopic.php?p=6068


8
+1 ฉันคิดว่านี่เป็นวิธีที่ดีกว่าคำตอบที่ได้รับการโหวตสูงสุดในปัจจุบัน - ฉันเกลียดที่จะต้องคัดลอกไฟล์ที่อื่นก่อนเพื่อแก้ไขปัญหานี้ (ทั่วไป!) Mine เกิดจากเครื่องมือสร้างรหัสที่สร้างชื่อเดียวกันกับที่มีคนอื่นเพิ่มไปยัง SVN ที่ไม่ดีของผมที่ไม่ "svn ขึ้น" ครั้งแรกที่ฉันคิดว่า ...
alpian

44
สิ่งนี้ใช้ไม่ได้กับ Tortoise / SVN 1.7 อีกต่อไป (หรืออย่างน้อยฉันก็ไม่สามารถหาไฟล์ล็อคใด ๆ ได้เนื่องจากขณะนี้มีฐานข้อมูลส่วนกลางที่มีเมทาดาทา)
pesche

10
ที่นี่เป็นที่รวดเร็วหนึ่งซับที่ซ้ำควรลบล็อคทั้งหมดเริ่มต้นในไดเรกทอรีปัจจุบัน:find . | grep ".svn/lock" | xargs rm
เจส

1
ด้วย SVN 1.7 คำตอบของ @ BradS ดูเหมือนมีประสิทธิภาพมากกว่า คำตอบนี้ไม่ได้ผลสำหรับฉันและ BradS ก็ทำเช่นนั้น
Ira Baxter

1
ในกรณีของฉันไม่มีไฟล์ล็อคใด ๆ ที่จะพบ
ทิม MB

106

ในกรณีของฉันฉันแก้ไขมันด้วยการลบบันทึกใน SQLite ".svn \ wc" ล็อคไฟล์บันทึกในตาราง WC_LOCK

ฉันเปิดไฟล์ "WC" ด้วยตัวแก้ไข SQLite และดำเนินการ

delete from WC_LOCK

สกรีนช็อตแสดงรายการทั้งหมดที่ถูกลบออกจาก WC_LOCK

ต่อไปนี้eakkasความคิดเห็นของคุณอาจจะต้องลบรายการทั้งหมดจากWORK_QUEUEตารางเช่นกัน


1
สิ่งนี้ใช้ได้กับฉันสำหรับการโค่นล้ม 1.7.5 บน Windows รุ่นทดลองดาวน์โหลด SQLite ผู้เชี่ยวชาญจากที่นี่: sqliteexpert.com/download.html เรียกใช้คำสั่ง "ลบ" sql ด้านบนในแท็บ SQL
M Katz

นี่คือสิ่งที่ดีกว่ามากเพียงแค่ความแตกต่างอย่างหนึ่งก็คือฉันคลิกปุ่มสีแดง (-)
Rohit Srivastava

3
DI SQL Spy ฟรีจะทำการหลอกลวง: yunqa.de/delphi/doku.php/products/sqlitespy/index
Ivelin Nikolaev

12
สิ่งนี้ได้ผลสำหรับฉันด้วย แต่ฉันก็จำเป็นต้องลบรายการในตาราง
WORK_QUEUE ด้วย

6
ไม่ทำงานโดยการลบรายการออกจาก WC_LOCK - สิ่งที่ได้ผลคือการดูเนื้อหาหยดของรายการ WORK_QUEUE ของฉันและแน่นอนว่าเป็นปัญหาไฟล์ - ฉันลบไฟล์ออกจากเบราว์เซอร์ repo แล้วลบรายการ work_queue - หลังจากนี้ ทำความสะอาดและกลับมาทำธุรกิจ!
GregM

95

วิธีที่ง่ายที่สุดที่เคย:

  1. ไปที่ไดเรกทอรีผู้ปกครอง (Folder)ของโครงการ
  2. คลิกขวาก่อนล่วงหน้า
  3. กดTortoiseSVNจากนั้นกดClean up ...
  4. ช่องโต้ตอบการล้างข้อมูลจะปรากฏขึ้นโดยอัตโนมัติ
  5. เลือกClean up working copy status, Break locks, Fix time stamps, Vacuum pristine copies, Refresh shell overlays,Include externals
  6. ปธน. ตกลง

คุณทำงานของคุณเรียบร้อยแล้ว

ตรวจสอบภาพหน้าจอสำหรับการอ้างอิงของคุณ

ขั้นแรก:

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่สอง: เปิดใช้งานตัวเลือก Break lock (ช่องทำเครื่องหมายที่สองในหน้าต่างป๊อปอัพล้างข้อมูล) ป้อนคำอธิบายรูปภาพที่นี่

หวังว่านี่จะช่วยคุณได้มาก


10
ในกรณีของฉันตัวเลือก "ล็อคการล็อก" ก็เพียงพอแล้วอาจลองด้วยตัวเลือกนี้ก่อน
Donatello

คำตอบที่ดี. ฉันมีกรณีของ 'การโต้ตอบตาบอด' กับสิ่งนี้และไม่เคยตรวจสอบตัวเลือกการทำความสะอาด ตามประวัติศาสตร์แล้ว 'นำทางไปยังรูทและล้างข้อมูล' เคยทำงาน แต่ฉันเดาว่าการล๊อคนั้นเพียงพอในกรณีของฉัน ..
Phil Cooper

1
ทำงานให้ฉันด้วย!
Daniel Silva

ไม่คิดว่า 'break lock' จะทำเพราะฉันไม่ได้ทำการล็อคใด ๆ แต่เห็นได้ชัดว่ามันแบ่งการล็อคภายใน svn ซึ่งก่อให้เกิดปัญหานี้ ขอบคุณ!
basher

ใช้งานไม่ได้สำหรับฉัน😦
Chimpanzee

48

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

หากนี่คือปัญหาของคุณ ... :

มีหลายวิธีในการแก้ไขขึ้นอยู่กับว่า / ทำไมไดเรกทอรีถูกแทนที่

ไม่ว่าจะด้วยวิธีใดคุณจะต้อง:

A) เปลี่ยนชื่อไดเรกทอรีที่มีอยู่เป็นชื่อชั่วคราว

B) ทำการ SVN ย้อนกลับเพื่อกู้คืนไดเรกทอรีที่ถูกลบจากระบบไฟล์ แต่ไม่ใช่จาก SVN

จากนั้นคุณก็จะ

A) คัดลอกไฟล์ที่เกี่ยวข้องไปยังไดเรกทอรีที่ถูกลบ

B) หากคุณมีการเปลี่ยนแปลงอย่างมีนัยสำคัญของเนื้อหาในไดเรกทอรีทำ SVN ลบในต้นฉบับกระทำและเปลี่ยนชื่อกลับไดเรกทอรีของคุณใหม่กับชื่อที่ต้องการตามด้วย SVN เพิ่มเพื่อให้ได้ที่หนึ่งภายใต้การควบคุมรุ่น


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

สิ่งที่เลวร้ายมากเกิดขึ้นเมื่อคนลบไดเรกทอรีรุ่นจากระบบไฟล์ แต่ไม่ใช่จาก SVN คำตอบข้างต้นอาจไม่ใช่การกู้คืนที่สมบูรณ์แบบ แต่เป็นการกู้คืน
Teemu Leisti

34

สำหรับฉันไม่มีวิธีแก้ปัญหาใดที่ได้ผล ฉันพบวิธีแก้ปัญหาโดยการปลดล็อก เมื่อฉันทำการล้างข้อมูล svn ฉันเลือก "Break Locks" พร้อมกับ "ล้างสถานะการทำสำเนาทำงาน"

ป้อนคำอธิบายรูปภาพที่นี่


สำหรับฉันทำลายล็อคจากเบราว์เซอร์ repo Tortoise SVN ทำงาน ทำลายล็อคในโฟลเดอร์ที่เช็คเอาต์ไม่ได้ทำอะไรเลย
Bhargava Mummadireddy

23

อันนี้ใช้ได้สำหรับฉัน

  1. ไปที่โฟลเดอร์รูท
  2. คลิกขวาและล้างข้อมูล
  3. ตรวจสอบตัวเลือกที่มีทั้งหมด
  4. กดตกลง

หลังจากล้างข้อมูลแล้วจะอนุญาตให้คุณอัปเดตเป็นเวอร์ชันล่าสุด


2
มันก็ใช้ได้กับฉันเช่นกัน คุณต้องตรวจสอบตัวเลือกที่มีทั้งหมด (6 รายการในรุ่นของฉัน) เพื่อดำเนินการล้างข้อมูลต่อไป มันจะล้มเหลวหากคุณตรวจสอบตัวเลือก [ล้างสถานะสำเนาที่ทำงานได้] และ [รวมถึงภายนอก]
Vincent Jia

1
ทั้งหมดนี้ใช้ได้สำหรับฉัน ... เพียงแค่คลิกขวาที่โครงการ> ทีม> ล้างข้อมูล ไม่ต้องลบแถวใด ๆ ออกจาก SQL ใน. svn หรืออย่างอื่น แค่นี้ก็ทำงาน ขอบคุณ!
msqar

สิ่งนี้ใช้ได้สำหรับฉันเช่นกันใน TortoiseSVN รุ่น 1.7.4 ฉันไปกับกล่องกาเครื่องหมายเริ่มต้นที่นำเสนอ
slm

ช่วยฉันวันนี้ แต่ฉันไม่ต้องการตรวจสอบตัวเลือกที่มีทั้งหมด สามครั้งล่าสุดที่ย้อนกลับการเปลี่ยนแปลงของฉันฉันไม่ได้ตรวจสอบและทำงานได้อยู่ดี ดูเพิ่มเติมที่stackoverflow.com/a/35192644/460775
EMBarbosa

1
สิ่งนี้ใช้ได้สำหรับฉัน ฉันเพียงแค่การตรวจสอบClean up working copy statusและBreaks locksและInclude externals
Phiber

11

สำหรับฉันมันเป็นความผิดของ Tortoise เต่าเพิ่งบ่นว่า "ไม่สามารถล้างทำความสะอาดได้เรียกใช้ล้างข้อมูล" แต่เมื่อฉันเรียกใช้บรรทัดคำสั่ง (ล้างข้อมูล svn) มันบอกฉันอย่างชัดเจนว่ามันไม่สามารถลบไฟล์บางไฟล์ที่ใช้งานอยู่ทางออกที่ชัดเจน เมื่อฉันปิด Visual Studio (ซึ่งทำให้ไฟล์เปิดอยู่) การล้างข้อมูลก็ใช้งานได้

โปรแกรมอื่น ๆ ยังสามารถเปิดไฟล์ใน repo ที่เป็นสาเหตุของปัญหานี้ได้ Excel ถือ xls open เป็นผู้ร้ายในอินสแตนซ์อื่นดังนั้นจึงเป็นการดีที่ควรปิดโปรแกรมทั้งหมดที่อาจใช้อะไรใน repo หรือแม้กระทั่งการรีบูตเพื่อบังคับให้โปรแกรมปิดและลองล้างอีกครั้ง


7

ฉันมีปัญหานี้เพราะโฟลเดอร์ภายนอกไม่ต้องการเชื่อมโยงไปยังโฟลเดอร์ที่มีอยู่ หากคุณเพิ่มบรรทัดคุณสมบัติ svn: externals โดยที่ปลายทางนั้นเป็นโฟลเดอร์ที่มีอยู่ (เป็นเวอร์ชันหรือไม่มีเวอร์ชัน) คุณจะได้รับข้อผิดพลาดที่ถูกล็อค SVN Woring Copy การล้างข้อมูลที่นี่จะบอกคุณว่าทุกอย่างไม่เป็นไร แต่การอัปเดตจะไม่ทำงาน

วิธีแก้ไข: ลบโฟลเดอร์ที่มีปัญหาออกจากที่เก็บและทำการอัพเดตในโฟลเดอร์รูทที่ตั้งค่าคุณสมบัติ svn: externals นี่จะเป็นการสร้างโฟลเดอร์และทั้งหมดจะถูกปรับอีกครั้ง

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


6

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือแสดงโฟลเดอร์ที่ซ่อนอยู่จากนั้นเปิดโฟลเดอร์. SVN คุณควรเห็นไฟล์ศูนย์ KB ชื่อชื่อ "การล็อค" การลบสิ่งนี้จะแก้ไขปัญหาได้


5

ฉันเจอปัญหาเดียวกันโดยใช้ SVN 1.7 และไม่มีการแก้ไขใด ๆ ที่กล่าวถึงข้างต้นทำงาน

สำคัญที่สุดตรวจสอบให้แน่ใจว่าคุณสำรองเนื้อหาที่แก้ไขทั้งหมดแล้ว

หลังจากใช้เวลาสองสามชั่วโมง (ไม่ดาวน์โหลดทุกอย่างเนื่องจากสาขาของฉันมีขนาดเกินกว่า 6gb) ฉันพบว่ามีไฟล์ db ชื่อ "wc" ในโฟลเดอร์. svn ของสาขาของคุณ

เปิดไฟล์ db โดยใช้ตัวจัดการ db (ฉันใช้ปลั๊กอินตัวจัดการ sqlite ของ firefox) และไปที่ตาราง WC_LOCK ตารางนี้จะมีรายการสำหรับล็อคที่ได้รับ ลบระเบียนออกจากตารางและทำเสร็จแล้ว :)


แม้ว่ามันจะเป็นคำตอบก่อนหน้านี้ค่อนข้างซ้ำซ้อน แต่ฉันก็ให้คะแนนคุณเพราะคุณพูดถึงปลั๊กอินตัวจัดการ Firefox ของ Firefox
ehambright

3

เมื่อฉันมีปัญหานี้ฉันพบว่าการรันคำสั่ง cleanup โดยตรงบนเส้นทางของปัญหาโดยทั่วไปดูเหมือนว่าจะทำงาน จากนั้นฉันจะเรียกใช้การล้างข้อมูลจากรากการทำงานอีกครั้งและมันจะบ่นเกี่ยวกับไดเรกทอรีอื่น ๆ และฉันทำซ้ำจนกว่าจะหยุดบ่น


1
ฉันไม่สามารถหาแฟ้มล็อคเช่นเดียวกับคำตอบก่อน แต่ตอนนี้ทำงานให้ฉัน :)
serenskye

3

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


3

ฉันทำได้โดยเพียงแค่สร้างโฟลเดอร์ใหม่เช็คเอาต์โครงการคัดลอกไฟล์ที่อัพเดตไปยังโฟลเดอร์ใหม่

มันได้รับการแก้ไขด้วยเช็คเอาต์สด


ฉันทำเช่นเดียวกัน (ฉันใส่สาเหตุลงไปที่ AnkhSVN ทำสำเนากับสำเนางานของฉันตอนนี้ AnkhSVN ถูกถอนการติดตั้งแล้ว)
Scotty.NET

2

คุณใช้ TortoiseSVN และเพิ่งอัพเกรดหรือไม่ ฉันมีปัญหานั้นมาก่อนเมื่อย้ายจาก 1.4 เป็น 1.5 และไม่รีบูต (ลองรีบูต)

เหตุผลที่คุณต้องรีบู๊ตเพราะไฟล์แคชได้รับความสนุกทั้งหมด

ไม่เช่นนั้นเพียงแค่ย้ายออกให้ส่งออกสำเนาที่ใช้งานได้ไปยังโฟลเดอร์ใหม่ (อย่าคัดลอกโฟลเดอร์. svn ที่ซ่อนอยู่) ชำระเงินโครงการอีกครั้งและย้ายรหัสทั้งหมดกลับคืนมา


สิ่งนี้เกิดขึ้นกับฉันเช่นกันนั่นคือฉันเพียงต้องการรีบูต
Matthew Lock

2

เพียงลบโฟลเดอร์. svn จากนั้นเรียกใช้การล้างข้อมูลบนไดเรกทอรีหลัก ทำงานได้อย่างสมบูรณ์ !!


3
ใน SVN 1.7 สิ่งนี้จะไม่ทำงานเนื่องจากมีโฟลเดอร์. svn เพียงโฟลเดอร์เดียวที่ด้านบน หากถูกลบไฟล์แนบไปยังที่เก็บจะถูกลบออก
AnneTheAgile

2

ในรุ่นภายใต้ Mac OS: การดำเนินการ -> การล้างสำเนาการทำงานการล้างข้อมูลที่ ...


2

ฉันมักจะได้รับปัญหาดังกล่าว รูปแบบของฉันที่ทำให้เกิดปัญหาการล้างข้อมูล

  1. ฉันเปิดไฟล์รูปภาพในวิวเวอร์
  2. ฉันลบไฟล์ภาพ / โฟลเดอร์
  3. ฉันพยายามคอมมิท / อัพเดท

การปิดโปรแกรมดูรูปภาพที่เปิดไฟล์ที่ถูกลบจะช่วยแก้ปัญหาได้ บางทีซอฟต์แวร์อื่น ๆ อาจบล็อกการล้างข้อมูลด้วยวิธีเดียวกัน

โดยทั่วไปแล้ว ฉันเชื่อว่าการรีสตาร์ทคอมพิวเตอร์อาจช่วยได้ในกรณีเช่นนี้


1

โดยปกติ SVN จะปรับปรุงโครงสร้างภายใน (.svn / prop-base) ของไฟล์ในโฟลเดอร์ก่อนที่จะดึงไฟล์จริงจากที่เก็บ เมื่อไฟล์ถูกนำมาจะถูกล้างออก เกิดข้อผิดพลาดบ่อยครั้งเนื่องจาก "อัปเดต" ล้มเหลวหรือยกเลิกก่อนกำหนดในระหว่างดำเนินการอัปเดต

  1. ตรวจสอบไฟล์ใด ๆ ที่อยู่ในรายการภายใต้ไดเรกทอรี. svn / prop-base
  2. ลบไฟล์ใด ๆ ที่ไม่อยู่ในโฟลเดอร์
  3. ทำความสะอาด
  4. ปรับปรุง

ตอนนี้การอัปเดตควรใช้งานได้


1

มีปัญหาเดียวกันเพราะฉันส่งออกโฟลเดอร์ภายใต้โฟลเดอร์ที่ควบคุมเวอร์ชัน ต้องลบโฟลเดอร์ออกจาก TortoiseSVN แล้วลบโฟลเดอร์ออกจากระบบแฟ้ม (TortoiseSVN ไม่ชอบโฟลเดอร์ย่อยที่ไม่มีเวอร์ชัน ... ทำไมไม่ ???)


ฉันควรเพิ่มว่าฉันส่งออกโฟลเดอร์ไปยังโฟลเดอร์เดียวกัน .. นี่คือวิธีที่คุณยกเลิกการยกเลิกก่อนหน้า โฟลเดอร์ที่มีเวอร์ชัน

1

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


1

ต่อไปนี้ควรทำ:

สถานะ svn grep ". L" | sed 's /.* (. *) $ / \ 1 /' | awk '{ความยาวการพิมพ์ ($ 1), $ 1}' | เรียงลำดับ -nr | awk '{พิมพ์ "pushd" $ 2 "; svn cleanup; popd"}' | ดวลจุดโทษ


1

อย่าลบโซลูชันของคุณ!

ในโฟลเดอร์. svn คุณมีไฟล์ชื่อ lock มันมีความยาว 0 ไบต์

คุณสามารถลบไฟล์เหล่านี้ทั้งหมดออกจากโฟลเดอร์. svn ทั้งหมดในโซลูชันของคุณและจะใช้งานได้

มันทำงานในกรณีของฉัน


นี่คือทางออกที่ง่ายที่สุด! ทำงานให้ฉัน
นาธาน

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

1

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

ใน TortoiseSVN เพื่อทำการถอดแบบในสถานที่ให้ลากโฟลเดอร์รากของสำเนาการทำงานจากรายการไฟล์ไปยังตัวเองในแผนผังไดเรกทอรีและเลือก "SVN Export versioned items here" จากเมนูป๊อปอัพ TortoiseSVN สังเกตเห็นว่าปลายทางนั้นเหมือนกันกับที่มาและแนะนำให้ยกเลิกการคัดลอกการทำงาน

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

หลังจากนี้การสะสางอัปเดตและการทำงานอื่น ๆ จะทำงานโดยไม่มีการผูกปม เนื่องจากทั้งสองขั้นตอนข้างต้นรักษาการปรับเปลี่ยนในท้องถิ่นจึงไม่ควรมีการสูญเสียข้อมูลใด ๆ (แต่การสำรองสำเนาการทำงานก่อนหน้านี้อาจเป็นความคิดที่ดี)

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


1

ฉันมีปัญหานี้ซึ่ง "ล้างข้อมูล" ใช้งานได้ แต่ "อัปเดต" จะล้มเหลวต่อไป วิธีแก้ปัญหาที่ทำงานคือการลบโฟลเดอร์ที่เป็นปัญหาผ่านทาง Windows Explorer ไม่ใช่การลบของ TortoiseSVN (ซึ่งทำเครื่องหมายการลบว่าเป็นสิ่งที่จะส่งไปยังที่เก็บข้อมูลจากนั้นฉันก็ทำการ "เช็คเอาท์" เพื่ออัปเดต "โฟลเดอร์" จากพื้นที่เก็บข้อมูล

ข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างการลบ O / S และการลบ SVN ที่นี่: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html

สะดุดตา:

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

และ:

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


1

หากคุณใช้ Linux ลองทำสิ่งนี้:

find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R

จากนั้นเรียกใช้cleanupคำสั่งในไดเรกทอรีนั้นแล้วลองอัปเดต


1

ฉันทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหาของฉัน:

  1. เปลี่ยนชื่อโฟลเดอร์ที่ละเมิดโดยวาง "_" ไว้หน้าชื่อโฟลเดอร์
  2. ทำ "ล้างข้อมูล" ของโฟลเดอร์หลักแล้วหรือไม่
  3. เปลี่ยนชื่อโฟลเดอร์ที่ละเมิดกลับไปเป็นชื่อเดิม
  4. ได้กระทำ

1

ใน Explorer โซลูชันคลิกขวาที่โครงการในการเปิดเมนูย่อยคลิกที่การโค่นล้มและเลือกการทำความสะอาด มันจะแก้ปัญหาเช่นเดียวกับฉัน หวังว่ามันจะทำงาน


1

ในการทำความสะอาด

  1. ลบโฟลเดอร์. svn

  2. ทำ svncheckout ในโฟลเดอร์รูท

  3. ลองทำการล้างข้อมูล

ปัญหานี้ได้รับการแก้ไขแล้ว

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