ข้อผิดพลาด SVN - ไม่ใช่สำเนาที่ใช้งานได้


215

เมื่อเร็ว ๆ นี้เซิร์ฟเวอร์ svn ของเราเปลี่ยนไปและเราได้ทำสวิตช์ svn

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

แต่ที่ระดับสูงสุดของที่เก็บเมื่อฉันพยายามอัปเดตไฟล์ฉันจะได้svn: Working copy '.' ข้อผิดพลาดที่ถูกล็อคและการล้างข้อมูลไม่ได้ช่วยอะไรเช่นกัน เมื่อฉันล้างข้อมูลฉันได้รับข้อผิดพลาดเช่นนี้ - svn: 'content' ไม่ใช่ไดเรกทอรีสำเนาที่ใช้งานได้

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

แก้ไข: ย่อหน้าสุดท้ายในคำตอบของ JesperE

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

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

แต่ฉันยังไม่สามารถหาข้อผิดพลาดของ svn switch ซึ่งตอนนี้อ่านอะไรบางอย่างเช่น

svn: ที่เก็บข้อมูลที่ 'svn: // repourl / reponame / foldername' มี uuid 'm / reponame' แต่ WC มี 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

ความคิดใด ๆ


สำหรับผู้ใช้ R ที่พบข้อผิดพลาดนี้: github.com/wch/r-source/wiki#adding-svn-information
isomorphismes

คำตอบ:


126

หากคุณได้รับ "ไม่ใช่สำเนาที่ใช้งานได้" เมื่อทำการเรียกซ้ำsvn cleanupฉันเดาว่าคุณมีไดเรกทอรีที่ควรจะเป็นสำเนาทำงาน (เช่น.svnไดเรกทอรีที่ระดับบนสุดบอกเช่นนั้น) แต่ไม่มี.svnไดเรกทอรีของตัวเอง ในกรณีนี้คุณสามารถลองลบ / ย้ายไดเร็กตอรี่นั้นจากนั้นทำการอัพเดตโลคัล (เช่นrm -rf content; svn checkout content)

หากคุณได้รับnot a working copyข้อผิดพลาดแสดงว่าการโค่นล้มไม่สามารถหา.svnไดเรกทอรีที่เหมาะสมได้ ตรวจสอบเพื่อดูว่ามี.svnไดเรกทอรีอยู่หรือไม่contents

ทางออกที่ดีที่สุดคือการชำระเงินใหม่หากเป็นไปได้


1
ฉันตกลงชำระเงินใหม่แทนการพยายามย้ายสำเนาการทำงานของคุณด้วย repo
Tigraine

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

ข้อเสนอแนะของคุณในย่อหน้าแรกไม่ทำงานบนระบบของฉัน (W7 + Cygwin) ค่อนข้างอัปเดต rm & svn ก็ทำได้
Jukka Dahlbom

17
คำเตือน: rm -rfลบโฟลเดอร์contentอย่างถาวร ทำการสำรองข้อมูลก่อนที่จะดำเนินการ
KrishPrabakar

47

ฉันเข้าสู่สถานการณ์ที่คล้ายกัน ( svn: 'papers' is not a working copy directory) วิธีอื่นดังนั้นฉันคิดว่าฉันโพสต์เรื่องราวการต่อสู้ของฉัน (ประยุกต์):

$ svn add papers
svn: Can't create directory 'papers/.svn': Permission denied

อ๊ะ! แก้ไขสิทธิ์ ... จากนั้น:

$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~     papers
$ svn cleanup
svn: 'papers' is not a working copy directory

และแม้แต่การเคลื่อนตัวpapersออกนอกทางและวิ่งsvn up(ซึ่งใช้งานได้กับ OP) ก็ไม่สามารถแก้ไขได้ นี่คือสิ่งที่ฉันทำ:

$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers

ที่ได้ผล


6

ฉันแก้ไขมันโดย

  1. คัดลอกสำเนาสำรองของโฟลเดอร์ที่ได้รับผลกระทบ
  2. SVN ย้อนกลับโฟลเดอร์ที่ได้รับผลกระทบ
  3. วางไฟล์กลับจากการสำรองข้อมูล

ในกรณีของฉันปัญหาเกิดจากการลบ. svn-files


ทำอย่างไร ? โปรดอธิบายโดยย่อ
Anand Savjani

5

บางทีคุณอาจคัดลอกแผนผังโฟลเดอร์และพยายามเพิ่มอันที่ต่ำที่สุด

SVN
|_
  |
  subfolder1
       |
       subfolder2   (here you get an error)

ในกรณีที่คุณต้องยอมรับไดเรกทอรีในระดับบน


3

วิธีแก้ปัญหา: เปลี่ยนชื่อไดเรกทอรีที่ไม่ใช่ 'สำเนาการทำงาน' Checkout / update / restore ไดเรกทอรีนี้อีกครั้งย้ายไฟล์จากไดเรกทอรีที่เปลี่ยนชื่อไปเป็นการเปลี่ยนแปลง Commit ใหม่

สาเหตุ: คุณทำการเปลี่ยนแปลงบางไฟล์ภายใต้ไดเรกทอรี. svn ตัวแบ่งนี้จะเป็น 'สำเนาที่ใช้งานได้'


3

หากคุณสร้างไฟล์ภายในไดเรกทอรีใหม่แทนที่จะใช้ 'svn เพิ่ม newdir / newfile' ให้ใช้ 'svn เพิ่ม newdir' เพราะคุณต้องเพิ่มไดเรกทอรี ไฟล์ทั้งหมดในไดเรกทอรีจะถูกเพิ่มโดยค่าเริ่มต้น


1

ฉันเพิ่งได้รับ "ไม่ใช่สำเนาที่ใช้งานได้" และสำหรับฉันเหตุผลก็คือ Automouter บน Unix เพียงแค่ "cd / path / to / work / directory" ใหม่เท่านั้นที่ได้ทำการหลอกลวง


1

ฉันต้องการอัปเดตโฟลเดอร์ 'contrib':

  1. ย้ายโฟลเดอร์เก่าออก
  2. คัดลอกใหม่
  3. คัดลอกโฟลเดอร์. svn ไปยังโฟลเดอร์ใหม่แต่ละโฟลเดอร์ (เฉพาะในสามกรณีของฉัน)

ฉันกรณีของฉันเช่นกันปัญหาเกิดจากการลบ. svn

แก้ไข


พบสิ่งนี้ประมาณ 4 ชั่วโมงในการทำความสะอาด SVN โดยใช้ปลั๊กอิน Eclipse - เวลาที่ดี! สำเนาการทำงานถูกล็อค - ไม่มันเกิดขึ้นกับข้อความที่ดีกว่าของคน Eclipse ขอบคุณ
Darth Jon Jon

1

ฉันพยายามวางโฟลเดอร์. svn จากโฟลเดอร์ย่อยไปยังโฟลเดอร์ราก มันได้ผล!!!


1

นี่คือสิ่งที่ฉันทำ:

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

1

ฉันยังพบปัญหานี้ในการดำเนินการ svn diff มันเกิดจากเส้นทางของไฟล์ที่ไม่ถูกต้องคุณควรเพิ่ม'./'เพื่อระบุไดเรกทอรีไฟล์ปัจจุบัน


0

svn: ที่เก็บข้อมูลที่ 'svn: // repourl / reponame / foldername' มี uuid 'm / reponame' แต่ WC มี 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

repo การโค่นล้มทุกครั้งมีตัวระบุเฉพาะ (uuid) การโค่นล้มใช้สิ่งนี้เพื่อให้แน่ใจว่าธุรกรรมซื้อคืนนั้นเหมือนกันเมื่อทำสิ่งต่างๆเช่นการสลับ คุณควรเปลี่ยน uuid บนเซิร์ฟเวอร์ให้เหมือนเดิม


การเปลี่ยน uuid บนเซิร์ฟเวอร์ - จะทำอย่างไร?
Vijay Dev

สุจริตฉันไม่มีความคิดฉันแค่คิดว่ามันสามารถทำได้ คุณเคยตรวจสอบใน Subversion Book พูดถึงอะไรบ้าง?
JesperE

0

อาจเป็นรูปแบบสำเนาที่ไม่ตรงกันหรือไม่ มันเปลี่ยนไประหว่าง svn 1.4 และ 1.5 และเครื่องมือที่ใหม่กว่าจะแปลงรูปแบบโดยอัตโนมัติ แต่อันที่เก่ากว่านั้นจะไม่ทำงานกับสำเนาที่แปลงแล้ว


0

คุณต้องลบ SVN - ไฟล์ฐานออกจากโครงการของคุณ (ซึ่งเป็นไฟล์แบบอ่านอย่างเดียว) เนื่องจากสิ่งนี้คุณได้รับข้อผิดพลาดนี้

ตรวจสอบโครงการใหม่อีกครั้งรวมการเปลี่ยนแปลง (ถ้ามี) ของโครงการ SVN รุ่นเก่าของคุณกับโครงการใหม่โดยใช้ "Winmerge" และยืนยันการเปลี่ยนแปลงในการตรวจสอบล่าสุดของคุณ


0

@JesperE พูดถึงว่าคุณต้องเปลี่ยน uuid ต่อไปนี้จะช่วยให้คุณประสบความสำเร็จ

บน SVN 1.5+ คุณสามารถทำ svnadmin setuuid; จากนั้นคุณสามารถตรวจสอบว่ามีการตั้งค่าอย่างถูกต้องโดยใช้ svnlook uuid ใน SVN เวอร์ชั่นก่อนหน้านี้มันเป็นกระบวนการที่ยากขึ้น ดูhttp://chestofbooks.com/computers/revision-control/subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html

นอกจากนี้ UUID ของ "m / reponame" ดูน่าสงสัย ฉันเชื่อว่าควรเป็นตัวเลขที่จัดรูปแบบเลขฐานสิบหกเช่นสำเนาที่ใช้งานได้ดังนั้นการกระทำนี้อาจปรับปรุงทุกอย่างรอบ :-)

[ตอนแรกฉันแสดงความคิดเห็นกับคำตอบของ @ JesperEแต่สร้างคำตอบนี้เพื่อให้ผู้คนเห็นได้ชัดเจนขึ้นและมีประโยชน์มากขึ้นสำหรับ Google ฉันลบความคิดเห็นของฉันตั้งแต่ ]


0

หากมีปัญหาเดียวกันนี้กลับกลายเป็นว่าเรามี Slik 1.6.2 และ Tortoise บนเครื่องเดียวกัน Tortoise ได้รับการอัปเดต (และอัปเดตสำเนาการทำงาน) แล้ว แต่ Slik ไม่ได้ดังนั้น Tortoise จึงทำงานได้ดี แต่บรรทัดคำสั่งล้มเหลวด้วย:

svn: '.' ไม่ใช่ไดเรกทอรีคัดลอกที่ใช้งานได้

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


0

สำหรับ mac: - ชำระเงินจากฝั่งเซิร์ฟเวอร์และหน้าต่างใหม่จะเปิดขึ้นเพื่อเลือกไดเรกทอรีจากเครื่องของคุณมากกว่าใส่รหัสทั้งหมดของคุณลงในโฟลเดอร์ที่เลือกจากนั้นเปิด svn local side และเพิ่มและส่งมอบโครงการ


0

วันนี้ฉันพบปัญหาเดียวกัน/FILE_NAME/ is not a working copyในตอนเช้าและฉันใช้เวลามากกว่าสองชั่วโมงเพื่อแก้ไขปัญหา หลังจากที่ยาวนานของ RND และ Google CHECKOUTผมพบว่าวิธีการแก้ปัญหาบางอย่างและนั่นคือ

  1. CHECKOUTจากSUBVERSIONท้องถิ่นเป็นโครงการใหม่
  2. เปลี่ยนรหัสบางส่วนในไฟล์ java และ COMMIT โครงการ
  3. มันใช้งานได้สำหรับฉัน

หวังว่ามันจะเป็นประโยชน์สำหรับคุณ


0

เมื่อเร็ว ๆ นี้ฉันใช้นักพัฒนาคนอื่น Mac ฉันมีสถานการณ์เดียวกันปัญหาคือ; ก่อนอื่นฉันต้องพิมพ์หาเส้นทาง repo ไปที่ terminal แต่ฉันไม่ได้บอกว่าชื่อผู้ใช้และรหัสผ่านของคุณคืออะไร


0

ฉันเพิ่งพบกรณีที่ไดเรกทอรี. svn อยู่บนเซิร์ฟเวอร์ nfs ในเครื่องที่แตกต่างกันและไคลเอนต์ nfs ไม่ได้เรียกใช้บริการล็อคไฟล์ ( lockd)

svn: E155007: '/mnt/svnworkdir' is not a working copy

สิ่งนี้หายไปหนึ่งครั้ง lockdเริ่มต้นบนโฮสต์ไคลเอ็นต์ nfs

ดูเหมือนว่าการโค่นล้มอาจเกิดขึ้นกับข้อผิดพลาดที่ดีขึ้นเมื่อมีปัญหาในการล็อคไฟล์ นี่คือการโค่นล้ม 1.10.0


0

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


-1

ลบโฟลเดอร์. svn ที่มีอยู่ในเครื่องของคุณ กดไอคอน windows และพิมพ์. svn ลบโฟลเดอร์ทั้งหมด มันใช้งานได้สำหรับฉัน

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