เมื่อฉันพยายามอัปเดตหรือคอมมิตโค้ดจากโปรเจ็กต์มันบอกฉันว่าโฟลเดอร์นั้นถูกล็อค เมื่อฉันพยายาม "ปลดล็อก" มันบอกว่าไม่มีอะไรให้ปลดล็อกในพื้นที่ทำงานนี้
นั่นหมายความว่าอย่างไร? ทำไมฉันไม่สามารถอัปเดตคอมมิตหรือแม้แต่ล้างโปรเจ็กต์ได้
เมื่อฉันพยายามอัปเดตหรือคอมมิตโค้ดจากโปรเจ็กต์มันบอกฉันว่าโฟลเดอร์นั้นถูกล็อค เมื่อฉันพยายาม "ปลดล็อก" มันบอกว่าไม่มีอะไรให้ปลดล็อกในพื้นที่ทำงานนี้
นั่นหมายความว่าอย่างไร? ทำไมฉันไม่สามารถอัปเดตคอมมิตหรือแม้แต่ล้างโปรเจ็กต์ได้
คำตอบ:
คลิกขวาที่โฟลเดอร์ไดเร็กทอรีการทำงานของ Subversion และเลือกTortoiseSVN-> Clean Upจากเมนูบริบท นี้จะ recurse เป็นวิธีที่ผ่านการทำงานไดเรกทอรีการทำความสะอาดและการกระทำใด ๆ ที่ไม่สมบูรณ์ของคุณเอาท้องถิ่นล็อค (ซึ่งแตกต่างจากการใช้การโค่นล้มล็อคของไฟล์ในพื้นที่เก็บข้อมูลที่ช่วยให้ทุกคนรู้เกี่ยวกับการล็อค)
หากไม่ได้ผลให้ดูว่าคุณสามารถค้นหาชื่อไฟล์ที่มีการเปลี่ยนแปลง แต่ยังไม่ได้ดำเนินการบันทึกและทำการชำระเงินซ้ำ
Break locks
เลือกตัวเลือก
หากไฟล์ถูกล็อกด้วยตัวเอง (บัญชี svn เดียวกัน) คุณสามารถทำตามขั้นตอนเหล่านี้:
คลิกขวาที่ไฟล์หรือโฟลเดอร์ที่ล็อกไว้แล้วเลือกTortoiseSVN-> Get lock ...และเลือก " [] Steal the locks " ที่มุมล่างซ้ายของกล่องโต้ตอบคลิก "OK" หากดำเนินการสำเร็จก็โอเค เมื่อคุณคลิกขวาที่ไฟล์อีกครั้งคุณจะเห็น TortoiseSVN-> Release lock ...คลิกเพื่อปลดล็อก
ใช้บรรทัดคำสั่ง svn เพื่อปลดล็อกโฟลเดอร์ในเครื่องเพียงใช้svn cleanup
ไฟล์.
ก่อน:
# svn commit -m "fixing #1234"
# svn st
# svn cleanup
หลังจาก:
# svn st
# svn commit -m "fixing #1234"
สำหรับทุกคนที่ยังคงมีปัญหานี้ ( ข้อผิดพลาด: Working copy "{DIR}" ถูกล็อก ) ฉันมีวิธีแก้ไข:
ฉันพบว่าเมื่อหนึ่งในหน้าต่าง TortoiseSVN ขัดข้องมันจะออกจาก TSVNCache.exe ที่ยังคงมีการจัดการบางส่วนในสำเนาการทำงานของคุณและนั่นทำให้เกิดปัญหาการล็อกที่คุณเห็น (และยังป้องกันไม่ให้ Clean Up ทำงานได้)
เพื่อแก้ไขปัญหานี้:
ทั้ง
1a) ใช้ Process Explorer หรือคล้ายกันเพื่อลบแฮนเดิลที่เป็นของ TSVNCache.exe
1b) .. หรือง่ายกว่านั้นเพียงใช้ Task Manager เพื่อฆ่า TSVNCache.exe
แล้ว
2) คลิกขวา -> TortoiseSVN -> Clean up ต้องตรวจสอบเฉพาะ "ล้างสถานะสำเนาการทำงาน" เท่านั้น
จากนั้นขอให้มีความสุขกับการอัปเดต / คอมมิต คุณสามารถสร้างลักษณะการล็อกซ้ำได้โดยทำการอัปเดต SVN จากนั้นจึงฆ่ากระบวนการ TortoiseProc.exe อย่างรวดเร็วก่อนที่การอัปเดตจะเสร็จสิ้น
นี่เป็นครั้งแรกที่ฉันมีปัญหานี้ ฉันพยายามรีสตาร์ทพีซีโดยไม่มีผลใด ๆ สิ่งนี้ช่วยแก้ปัญหาของฉัน:
ทางออกสำหรับฉัน:
สิ่งนี้ใช้ได้กับฉัน ฉันสามารถทำการเปลี่ยนแปลงได้
หากต้องการปลดล็อกไฟล์ในสำเนาการทำงานของคุณจากพรอมต์คำสั่งที่ผู้ใช้รายอื่นล็อกอยู่ให้ใช้--force
ตัวเลือก
$ svn unlock --force tree.jpg
ฉันมีปัญหานี้และฉันได้ทำตามขั้นตอนด้านล่างเพื่อแก้ไขแล้ว:
ทำขั้นตอนนี้ในโฟลเดอร์หลักแทนโฟลเดอร์ย่อย!
มันได้ผลสำหรับฉัน!
ฉันกำลังย้ายโฟลเดอร์ขึ้นหนึ่งระดับและไปยังโฟลเดอร์อื่น ความผิดพลาดของฉันคือการย้ายจากภายในโฟลเดอร์หลัก
ตัวอย่างที่ไม่ดี:
pwd -> C:\Repo\ParentDir\
svn move ./DirtoCopy ../AnotherDir
SVN จำเป็นต้องอัพเดตไดเร็กทอรีหลักด้วยข้อมูลโฟลเดอร์ที่ถูกลบ
คุณต้องทำจากรากทั่วไปของโฟลเดอร์ต้นทางและโฟลเดอร์ปลายทางหรือใช้เส้นทางแบบเต็ม
ตัวอย่างที่ดี:
svn move C:\Repo\ParentDir\DirtoCopy C:\Repo\NewLocation
ฉันมีปัญหานี้ซึ่งฉันไม่สามารถปลดล็อกไฟล์จากฝั่งไคลเอ็นต์ได้ ฉันตัดสินใจไปที่ฝั่งเซิร์ฟเวอร์ซึ่งง่ายกว่ามาก
บนเซิร์ฟเวอร์ SVN:
ค้นหาล็อค
svnadmin lslocks /root/of/repo
(in my case it was var/www/svn/[name of Company])
You can add a specific path to this by svnadmin lslocks /root/of/repo "path/to/file"
ถอดล็อค
svnadmin rmlocks /root/of/repo “path/to/file”
แค่นั้นแหละ!
สารละลาย :
นอกเหนือจากคำตอบของ David M แล้วขณะทำการล้างข้อมูล -> ตรวจสอบตัวเลือก 'break locks' วิธีนี้จะช่วยให้แน่ใจว่ามีการคลายล็อก จากนั้นทำการอัพเดต svn สิ่งนี้ได้ผลสำหรับฉัน
ในการปลดล็อกเอกสารที่ถูกบล็อก: 1. คลิกขวา -> ล็อก 2. เลือกช่องทำเครื่องหมาย "ขโมยล็อก" 2. ปลดล็อก
ฉันค้นคว้าเกี่ยวกับปัญหานี้มากมาย แต่ไม่มีวิธีแก้ไขปัญหาของฉันจนกว่าฉันจะลองทำสิ่งนี้:
โฟลเดอร์ repo ของฉันแชร์กับเครื่องเสมือน Windows xp ดังนั้นฉันจึงดำเนินการล้างข้อมูลจาก VM จากนั้นเรียกใช้ SVN UPDATE จากโฮสต์
มันได้ผลสำหรับฉัน
คำทักทายจากคอสตาริกา
ฉันสามารถแก้ไขปัญหานี้ในเครื่องของฉันได้โดยการเปลี่ยนชื่อโฟลเดอร์เพื่อทำให้เส้นทางโฟลเดอร์เล็กลง
ฉันเคยเกิดเหตุการณ์นี้ขึ้นหลังจากที่ Tortoise เสียหายและขัดข้องขณะพยายามอัปเดตโฟลเดอร์ ฉันลงเอยด้วยการติดตั้ง Tortoise อีกครั้ง แต่ Ghost Lock ยังคงปรากฏอยู่ จากนั้นฉันต้องลบโฟลเดอร์และทำการชำระเงินใหม่ เห็นได้ชัดว่าฉันโชคดีมากที่ไม่มีการเปลี่ยนแปลงใหม่ ๆ ให้กระทำในเวลานั้น อย่างไรก็ตามไม่ใช่ข่าวดีและถ้าใครมีวิธีแก้ปัญหาที่ดีกว่าฉันก็ชอบที่จะได้ยินมันด้วยตัวเอง แม้แต่การใช้ "Break Lock" คือการปลดล็อกด้วยตัวเลือกบังคับก็ไม่ได้เปลี่ยนแปลงอะไร
ทำความสะอาดเลือกช่องทำเครื่องหมายทั้งหมด => งานนี้สำหรับฉัน
ฉันพบปัญหานี้หลังจากการดำเนินการเหล่านี้:
ในที่สุดฉันก็แก้ปัญหาด้วยการบังคับล็อกอีกครั้ง: TortoiseSVN -> Get Lock -> เลือก "ขโมยล็อค" จากนั้นกดหรือปลดล็อก