ฉันได้รับข้อผิดพลาดนี้เมื่อฉันsvn update
:
Working copy XXXXXXXX ถูกล็อคกรุณาเรียกใช้คำสั่ง "Cleanup"
เมื่อฉันล้างข้อมูลฉันได้รับ
การล้างข้อมูลล้มเหลวในการประมวลผลเส้นทางต่อไปนี้: XXXXXXXX
ฉันจะออกจากวงนี้ได้อย่างไร
ฉันได้รับข้อผิดพลาดนี้เมื่อฉันsvn update
:
Working copy XXXXXXXX ถูกล็อคกรุณาเรียกใช้คำสั่ง "Cleanup"
เมื่อฉันล้างข้อมูลฉันได้รับ
การล้างข้อมูลล้มเหลวในการประมวลผลเส้นทางต่อไปนี้: XXXXXXXX
ฉันจะออกจากวงนี้ได้อย่างไร
คำตอบ:
แนวทางหนึ่งคือ:
อีกตัวเลือกหนึ่งคือลบโฟลเดอร์ระดับบนสุดและลองอีกครั้ง หวังว่ามันจะไม่เป็นเช่นนั้น
สำหรับฉันเคล็ดลับคือการทำงาน svn cleanup
ที่ด้านบนของสำเนาการทำงานของฉันไม่ใช่ในโฟลเดอร์ที่ฉันได้ทำงานตลอดเวลาก่อนที่ปัญหาจะเกิดขึ้น
ดูของคุณในโฟลเดอร์จะมีไฟล์ในนั้นเรียกว่า.svn
lock
ลบไฟล์นั้นและคุณจะสามารถอัปเดต อาจมีไฟล์ล็อคเพิ่มเติมใน.svn
ไดเรกทอรีของแต่ละไดเรกทอรีย่อย พวกเขาจะต้องลบด้วย ซึ่งสามารถทำได้เป็นแบทช์ค่อนข้างง่ายจากบรรทัดคำสั่งด้วยเช่น
find . -name 'lock' -exec rm -v {} \;
โปรดทราบว่าคุณกำลังแก้ไขไฟล์ด้วยตนเองใน .svn
โฟลเดอร์ด้วยตนเอง พวกเขาถูกวางไว้ที่นั่นด้วยเหตุผล เหตุผลนั้นอาจเป็นข้อผิดพลาด แต่ถ้าไม่ใช่คุณอาจทำลายสำเนาในเครื่องของคุณได้
แหล่งที่มา: http://www.svnforum.org/2017/viewtopic.php?p=6068
find . | grep ".svn/lock" | xargs rm
ในกรณีของฉันฉันแก้ไขมันด้วยการลบบันทึกใน SQLite ".svn \ wc" ล็อคไฟล์บันทึกในตาราง WC_LOCK
ฉันเปิดไฟล์ "WC" ด้วยตัวแก้ไข SQLite และดำเนินการ
delete from WC_LOCK
ต่อไปนี้eakkasความคิดเห็นของคุณอาจจะต้องลบรายการทั้งหมดจากWORK_QUEUE
ตารางเช่นกัน
วิธีที่ง่ายที่สุดที่เคย:
Clean up working copy status
, Break locks
, Fix time stamps
, Vacuum pristine copies
, Refresh shell overlays
,Include externals
คุณทำงานของคุณเรียบร้อยแล้ว
ตรวจสอบภาพหน้าจอสำหรับการอ้างอิงของคุณ
ขั้นแรก:
ขั้นตอนที่สอง: เปิดใช้งานตัวเลือก Break lock (ช่องทำเครื่องหมายที่สองในหน้าต่างป๊อปอัพล้างข้อมูล)
หวังว่านี่จะช่วยคุณได้มาก
เพื่อนร่วมงานที่ทำงานอย่างต่อเนื่องเห็นข้อความนี้และสำหรับเขาก็เพราะเขาลบไดเรกทอรีภายใต้การควบคุมเวอร์ชัน SVN โดยไม่ต้องลบมันออกจาก SVN แล้วสร้างไดเรกทอรีใหม่ในสถานที่ที่ไม่อยู่ภายใต้การควบคุมเวอร์ชันด้วยชื่อเดียวกัน
หากนี่คือปัญหาของคุณ ... :
มีหลายวิธีในการแก้ไขขึ้นอยู่กับว่า / ทำไมไดเรกทอรีถูกแทนที่
ไม่ว่าจะด้วยวิธีใดคุณจะต้อง:
A) เปลี่ยนชื่อไดเรกทอรีที่มีอยู่เป็นชื่อชั่วคราว
B) ทำการ SVN ย้อนกลับเพื่อกู้คืนไดเรกทอรีที่ถูกลบจากระบบไฟล์ แต่ไม่ใช่จาก SVN
จากนั้นคุณก็จะ
A) คัดลอกไฟล์ที่เกี่ยวข้องไปยังไดเรกทอรีที่ถูกลบ
B) หากคุณมีการเปลี่ยนแปลงอย่างมีนัยสำคัญของเนื้อหาในไดเรกทอรีทำ SVN ลบในต้นฉบับกระทำและเปลี่ยนชื่อกลับไดเรกทอรีของคุณใหม่กับชื่อที่ต้องการตามด้วย SVN เพิ่มเพื่อให้ได้ที่หนึ่งภายใต้การควบคุมรุ่น
สำหรับฉันไม่มีวิธีแก้ปัญหาใดที่ได้ผล ฉันพบวิธีแก้ปัญหาโดยการปลดล็อก เมื่อฉันทำการล้างข้อมูล svn ฉันเลือก "Break Locks" พร้อมกับ "ล้างสถานะการทำสำเนาทำงาน"
อันนี้ใช้ได้สำหรับฉัน
หลังจากล้างข้อมูลแล้วจะอนุญาตให้คุณอัปเดตเป็นเวอร์ชันล่าสุด
Clean up working copy status
และBreaks locks
และInclude externals
สำหรับฉันมันเป็นความผิดของ Tortoise เต่าเพิ่งบ่นว่า "ไม่สามารถล้างทำความสะอาดได้เรียกใช้ล้างข้อมูล" แต่เมื่อฉันเรียกใช้บรรทัดคำสั่ง (ล้างข้อมูล svn) มันบอกฉันอย่างชัดเจนว่ามันไม่สามารถลบไฟล์บางไฟล์ที่ใช้งานอยู่ทางออกที่ชัดเจน เมื่อฉันปิด Visual Studio (ซึ่งทำให้ไฟล์เปิดอยู่) การล้างข้อมูลก็ใช้งานได้
โปรแกรมอื่น ๆ ยังสามารถเปิดไฟล์ใน repo ที่เป็นสาเหตุของปัญหานี้ได้ Excel ถือ xls open เป็นผู้ร้ายในอินสแตนซ์อื่นดังนั้นจึงเป็นการดีที่ควรปิดโปรแกรมทั้งหมดที่อาจใช้อะไรใน repo หรือแม้กระทั่งการรีบูตเพื่อบังคับให้โปรแกรมปิดและลองล้างอีกครั้ง
ฉันมีปัญหานี้เพราะโฟลเดอร์ภายนอกไม่ต้องการเชื่อมโยงไปยังโฟลเดอร์ที่มีอยู่ หากคุณเพิ่มบรรทัดคุณสมบัติ svn: externals โดยที่ปลายทางนั้นเป็นโฟลเดอร์ที่มีอยู่ (เป็นเวอร์ชันหรือไม่มีเวอร์ชัน) คุณจะได้รับข้อผิดพลาดที่ถูกล็อค SVN Woring Copy การล้างข้อมูลที่นี่จะบอกคุณว่าทุกอย่างไม่เป็นไร แต่การอัปเดตจะไม่ทำงาน
วิธีแก้ไข: ลบโฟลเดอร์ที่มีปัญหาออกจากที่เก็บและทำการอัพเดตในโฟลเดอร์รูทที่ตั้งค่าคุณสมบัติ svn: externals นี่จะเป็นการสร้างโฟลเดอร์และทั้งหมดจะถูกปรับอีกครั้ง
ปัญหานี้เกิดขึ้นกับฉันเพราะ svn: externals สำหรับไฟล์ต้องการโฟลเดอร์ปลายทางที่จะควบคุมเวอร์ชัน หลังจากที่ฉันสังเกตเห็นว่าสิ่งนี้ใช้ไม่ได้กับที่เก็บข้อมูลอื่นฉันจึงปัดจากไฟล์ภายนอกไปยังโฟลเดอร์ภายนอกและเข้าสู่ระเบียบนี้
วิธีที่ง่ายที่สุดในการทำเช่นนี้คือแสดงโฟลเดอร์ที่ซ่อนอยู่จากนั้นเปิดโฟลเดอร์. SVN คุณควรเห็นไฟล์ศูนย์ KB ชื่อชื่อ "การล็อค" การลบสิ่งนี้จะแก้ไขปัญหาได้
ฉันเจอปัญหาเดียวกันโดยใช้ SVN 1.7 และไม่มีการแก้ไขใด ๆ ที่กล่าวถึงข้างต้นทำงาน
สำคัญที่สุดตรวจสอบให้แน่ใจว่าคุณสำรองเนื้อหาที่แก้ไขทั้งหมดแล้ว
หลังจากใช้เวลาสองสามชั่วโมง (ไม่ดาวน์โหลดทุกอย่างเนื่องจากสาขาของฉันมีขนาดเกินกว่า 6gb) ฉันพบว่ามีไฟล์ db ชื่อ "wc" ในโฟลเดอร์. svn ของสาขาของคุณ
เปิดไฟล์ db โดยใช้ตัวจัดการ db (ฉันใช้ปลั๊กอินตัวจัดการ sqlite ของ firefox) และไปที่ตาราง WC_LOCK ตารางนี้จะมีรายการสำหรับล็อคที่ได้รับ ลบระเบียนออกจากตารางและทำเสร็จแล้ว :)
เมื่อฉันมีปัญหานี้ฉันพบว่าการรันคำสั่ง cleanup โดยตรงบนเส้นทางของปัญหาโดยทั่วไปดูเหมือนว่าจะทำงาน จากนั้นฉันจะเรียกใช้การล้างข้อมูลจากรากการทำงานอีกครั้งและมันจะบ่นเกี่ยวกับไดเรกทอรีอื่น ๆ และฉันทำซ้ำจนกว่าจะหยุดบ่น
หากคุณใช้เครื่อง Windows ให้ดูที่เก็บข้อมูลผ่านเบราว์เซอร์และคุณอาจเห็นสองไฟล์ด้วยชื่อไฟล์เดียวกัน แต่ใช้ตัวพิมพ์เล็กและตัวพิมพ์เล็ก การโค่นล้มเป็นกรณี ๆ ไปและ Windows ไม่ได้เป็นเช่นนั้นคุณจึงสามารถล็อคเมื่อ Windows คิดว่ามันกำลังดึงไฟล์เดียวกันและการโค่นล้มไม่ได้ ลบชื่อไฟล์ที่ซ้ำกันบนที่เก็บแล้วลองอีกครั้ง
ฉันทำได้โดยเพียงแค่สร้างโฟลเดอร์ใหม่เช็คเอาต์โครงการคัดลอกไฟล์ที่อัพเดตไปยังโฟลเดอร์ใหม่
มันได้รับการแก้ไขด้วยเช็คเอาต์สด
คุณใช้ TortoiseSVN และเพิ่งอัพเกรดหรือไม่ ฉันมีปัญหานั้นมาก่อนเมื่อย้ายจาก 1.4 เป็น 1.5 และไม่รีบูต (ลองรีบูต)
เหตุผลที่คุณต้องรีบู๊ตเพราะไฟล์แคชได้รับความสนุกทั้งหมด
ไม่เช่นนั้นเพียงแค่ย้ายออกให้ส่งออกสำเนาที่ใช้งานได้ไปยังโฟลเดอร์ใหม่ (อย่าคัดลอกโฟลเดอร์. svn ที่ซ่อนอยู่) ชำระเงินโครงการอีกครั้งและย้ายรหัสทั้งหมดกลับคืนมา
เพียงลบโฟลเดอร์. svn จากนั้นเรียกใช้การล้างข้อมูลบนไดเรกทอรีหลัก ทำงานได้อย่างสมบูรณ์ !!
ในรุ่นภายใต้ Mac OS: การดำเนินการ -> การล้างสำเนาการทำงานการล้างข้อมูลที่ ...
ฉันมักจะได้รับปัญหาดังกล่าว รูปแบบของฉันที่ทำให้เกิดปัญหาการล้างข้อมูล
การปิดโปรแกรมดูรูปภาพที่เปิดไฟล์ที่ถูกลบจะช่วยแก้ปัญหาได้ บางทีซอฟต์แวร์อื่น ๆ อาจบล็อกการล้างข้อมูลด้วยวิธีเดียวกัน
โดยทั่วไปแล้ว ฉันเชื่อว่าการรีสตาร์ทคอมพิวเตอร์อาจช่วยได้ในกรณีเช่นนี้
โดยปกติ SVN จะปรับปรุงโครงสร้างภายใน (.svn / prop-base) ของไฟล์ในโฟลเดอร์ก่อนที่จะดึงไฟล์จริงจากที่เก็บ เมื่อไฟล์ถูกนำมาจะถูกล้างออก เกิดข้อผิดพลาดบ่อยครั้งเนื่องจาก "อัปเดต" ล้มเหลวหรือยกเลิกก่อนกำหนดในระหว่างดำเนินการอัปเดต
ตอนนี้การอัปเดตควรใช้งานได้
มีปัญหาเดียวกันเพราะฉันส่งออกโฟลเดอร์ภายใต้โฟลเดอร์ที่ควบคุมเวอร์ชัน ต้องลบโฟลเดอร์ออกจาก TortoiseSVN แล้วลบโฟลเดอร์ออกจากระบบแฟ้ม (TortoiseSVN ไม่ชอบโฟลเดอร์ย่อยที่ไม่มีเวอร์ชัน ... ทำไมไม่ ???)
เริ่มค้นหา ... ล็อค ... เลือกไฟล์ทั้งหมดที่แสดงรายการไว้และลบ .. แก้ไขแล้ว
ต่อไปนี้ควรทำ:
สถานะ svn grep ". L" | sed 's /.* (. *) $ / \ 1 /' | awk '{ความยาวการพิมพ์ ($ 1), $ 1}' | เรียงลำดับ -nr | awk '{พิมพ์ "pushd" $ 2 "; svn cleanup; popd"}' | ดวลจุดโทษ
อย่าลบโซลูชันของคุณ!
ในโฟลเดอร์. svn คุณมีไฟล์ชื่อ lock มันมีความยาว 0 ไบต์
คุณสามารถลบไฟล์เหล่านี้ทั้งหมดออกจากโฟลเดอร์. svn ทั้งหมดในโซลูชันของคุณและจะใช้งานได้
มันทำงานในกรณีของฉัน
การยกเลิกการแปลงไฟล์ในสถานที่และการเช็คเอาต์ที่สดใหม่ในตำแหน่งเดียวกันได้แก้ปัญหานี้ให้ฉันแล้ว
ใน TortoiseSVN เพื่อทำการถอดแบบในสถานที่ให้ลากโฟลเดอร์รากของสำเนาการทำงานจากรายการไฟล์ไปยังตัวเองในแผนผังไดเรกทอรีและเลือก "SVN Export versioned items here" จากเมนูป๊อปอัพ TortoiseSVN สังเกตเห็นว่าปลายทางนั้นเหมือนกันกับที่มาและแนะนำให้ยกเลิกการคัดลอกการทำงาน
หลังจาก unversioning ให้ทำการเช็คเอาต์ใหม่ลงในโฟลเดอร์เดียวกัน (ซึ่งตอนนี้มีสำเนาทั้งหมดของไฟล์ทั้งหมดที่คุณมี) TortoiseSVN จะเตือนคุณว่าคุณกำลังเช็คเอาท์ในโฟลเดอร์ที่มีอยู่ แต่คุณสามารถไปข้างหน้าได้
หลังจากนี้การสะสางอัปเดตและการทำงานอื่น ๆ จะทำงานโดยไม่มีการผูกปม เนื่องจากทั้งสองขั้นตอนข้างต้นรักษาการปรับเปลี่ยนในท้องถิ่นจึงไม่ควรมีการสูญเสียข้อมูลใด ๆ (แต่การสำรองสำเนาการทำงานก่อนหน้านี้อาจเป็นความคิดที่ดี)
หนึ่งคำเตือน: หากสำเนาการทำงานมีเวอร์ชั่นแบบผสมหรือการเปลี่ยนแปลงคุณสมบัติที่ไม่มีข้อผูกมัดข้อมูลนั้นจะหายไป สำหรับฉันนี่ไม่ใช่เหตุการณ์ที่เกิดขึ้นทั่วไปและเมื่อเลือกตัวเลือกสำเนาการทำงานที่เสียหายหรือสูญเสียการเปลี่ยนแปลงคุณสมบัติที่ไม่มีข้อผูกมัดฉันมักเลือกที่จะทำสิ่งต่อไป
ฉันมีปัญหานี้ซึ่ง "ล้างข้อมูล" ใช้งานได้ แต่ "อัปเดต" จะล้มเหลวต่อไป วิธีแก้ปัญหาที่ทำงานคือการลบโฟลเดอร์ที่เป็นปัญหาผ่านทาง Windows Explorer ไม่ใช่การลบของ TortoiseSVN (ซึ่งทำเครื่องหมายการลบว่าเป็นสิ่งที่จะส่งไปยังที่เก็บข้อมูลจากนั้นฉันก็ทำการ "เช็คเอาท์" เพื่ออัปเดต "โฟลเดอร์" จากพื้นที่เก็บข้อมูล
ข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างการลบ O / S และการลบ SVN ที่นี่: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html
สะดุดตา:
เมื่อคุณ TortoiseSVN →ลบไฟล์ไฟล์นั้นจะถูกลบออกจากสำเนาการทำงานของคุณทันทีเช่นเดียวกับการทำเครื่องหมายสำหรับการลบในพื้นที่เก็บข้อมูลในการกระทำต่อไป
และ:
หากไฟล์ถูกลบผ่าน explorer แทนที่จะใช้เมนูบริบทของ TortoiseSVN ไดอะล็อกการคอมมิชชันจะแสดงไฟล์เหล่านั้นและให้คุณลบไฟล์นั้นออกจากการควบคุมเวอร์ชันก่อนการคอมมิท อย่างไรก็ตามหากคุณอัปเดตสำเนาการทำงานของคุณการโค่นล้มจะพบไฟล์ที่หายไปและแทนที่ด้วยเวอร์ชันล่าสุดจากที่เก็บ
หากคุณใช้ Linux ลองทำสิ่งนี้:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
จากนั้นเรียกใช้cleanup
คำสั่งในไดเรกทอรีนั้นแล้วลองอัปเดต
ฉันทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหาของฉัน:
ใน Explorer โซลูชันคลิกขวาที่โครงการในการเปิดเมนูย่อยคลิกที่การโค่นล้มและเลือกการทำความสะอาด มันจะแก้ปัญหาเช่นเดียวกับฉัน หวังว่ามันจะทำงาน
ในการทำความสะอาด
ลบโฟลเดอร์. svn
ทำ svncheckout ในโฟลเดอร์รูท
ลองทำการล้างข้อมูล
ปัญหานี้ได้รับการแก้ไขแล้ว