วิธีการแก้ไข“ มีพื้นที่การดูแลสำเนาการทำงานขาดหายไป” ใน SVN


184

ฉันลบไดเรกทอรีที่เพิ่งเพิ่มออฟไลน์ในที่เก็บของฉันด้วยตนเอง ฉันไม่สามารถกู้คืนไดเรกทอรี

ความพยายามใด ๆ ที่จะทำการอัพเดตหรือการคอมมิตจะล้มเหลวด้วย:

"blabla/.svn" containing working copy admin area is missing.

ฉันเข้าใจว่าทำไม แต่มีอยู่เพื่อแก้ไขปัญหานี้

ฉันไม่ต้องการที่จะเช็คเอาต์ repo ทั้งหมดและเพิ่มการเปลี่ยนแปลงของฉันด้วยตนเองมันจะใช้เวลาหลายชั่วโมง

คำตอบ:


148

ตามนี้: http://www.devcha.com/2008/03/svn-directory-svn-containing-working.html

เช็กเอาต์โฟลเดอร์ "blabla" ไปยังตำแหน่งอื่นแล้วคัดลอกโฟลเดอร์. svn กลับไปที่ "blabla" ดั้งเดิม


62
ฉันมี SVN มาก .svnไดเรกทอรีย่อยที่ทิ้งขยะทั่วสถานที่จะต้องเป็นแนวคิดที่เลวร้ายที่สุดในประวัติการควบคุมเวอร์ชัน
โยฮันเนส Fahrenkrug

9
ผู้คนลองดูคำแนะนำด้านล่างโดย Rob มันง่ายมากแล้วโซลูชันปัจจุบัน
Mohammad Arif

โมฮัมเหม็ดขอขอบคุณสำหรับหัวขึ้น ที่ทำงานให้ฉัน พยายามรับ SVN ให้เพิกเฉยต่อล็อกไดเร็กทอรีและลบ. svn พาฉันไปที่ปัญหานี้ โซลูชันของ Rob แก้ไขได้
Asmor

โยฮันเนสฉันไม่ใช่ผู้สนับสนุนของ SVN แต่ข้อดีของไดเรกทอรี. svn คือคุณสามารถตรวจสอบไดเรกทอรีย่อยของที่เก็บและดูแลการควบคุมเวอร์ชันได้
โจเซฟ Persie

@MohammadArif ตอนนี้มี "Robs" สองอันแล้ว
Charles Clayton

123

FWIW ผมก็มีสถานการณ์ที่คล้ายกันและใช้SVN --force __dir__ ที่แก้ไขปัญหาสำหรับฉัน จากนั้นฉันก็ทำงานกับสำเนางานของฉันได้ตามปกติ


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

1
นี่เป็นสิ่งที่ดีมาก ฉันได้เพิ่มไดเรกทอรีลบ. svn แต่ไม่เคยกระทำ Totaly ทำเคล็ดลับ
Eric

8
ขอบคุณ; คำตอบนี้ช่วยฉันได้มาก svn cleanupจากนั้นsvn --force delete <directory-that-doesn't-exist-but-should>ทำงานให้ฉัน
mpontillo

ทำงานในการลองครั้งที่สองฉันพยายามครั้งแรกโดยไม่มี - บังคับซึ่งทิ้งไฟล์ล็อกไว้ใน. svn ของพาเรนต์ซึ่งฉันต้องลบออกด้วยตนเอง ครั้งที่สองด้วย - บังคับแก้ไขปัญหา
Jörn Horstmann

3
หืมคำสั่งนั้นทำให้ฉันมีข้อผิดพลาด "การทำงานการคัดลอก" ที่เหมือนกัน
ออสการ์

72

สิ่งที่ฉันทำเพื่อแก้ไขปัญหานี้คือการลบสำเนาโลคัลของโฟลเดอร์ภายใต้คำถามและจากนั้นให้ทำพาเรนต์svn updateโดยตรงหลังจากนั้น

แก้ไขให้ถูกต้องขึ้น


3
ฉันไม่อยากจะเชื่อ ... ฉันลองทุกอย่าง ... และมันง่ายมาก !!! มันใช้งานได้ดีมากขอบคุณมาก !!!!!
lucaferrario

นี่คือคำตอบที่ตรงไปตรงมามากที่สุด
joaerl

35

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

แก้ไข:เพื่อให้เจาะจงมากขึ้นฉันตั้งใจจะแนะนำให้เพิ่มระดับหนึ่งและลบไดเรกทอรีที่มีอยู่ จากนั้นทำ

svn update --set-depth infinity

เพื่อแทนที่ไดเรกทอรี


ฉันลองมัน แต่ด้วยเหตุผลแปลก ๆ บางอย่างฉันก็จบลงด้วยไดเรกทอรีว่างเปล่า ฉันไม่ได้รับมัน ...
E-satis

<code> svn update blabla ชัดเจน </code> จากผู้ปกครองควรทำงานเช่นกัน
jmanning2k

@ jmanning2k นั่นคือสิ่งที่ฉันคิดเช่นกัน แต่ OP บอกว่าเขาลองแล้วไม่ได้ผล
Rob Wells

เพื่อชี้แจงให้ชัดเจนฉันแนะนำ--set-depth infinityเพราะสิ่งนี้: stackoverflow.com/questions/866835/ …
Wim Coenen

1
สิ่งนี้ต้องการ upvotes มากขึ้น ... โซลูชันที่สะอาดและรวดเร็ว (สำหรับมาตรฐาน svn)
Dino

6

ฉันเพิ่มไดเรกทอรีไปยัง svn จากนั้นฉันลบโฟลเดอร์. svn โดยไม่ตั้งใจภายใน

ฉันใช้

svn delete --keep-local folderName

เพื่อแก้ไขปัญหาของฉัน


สิ่งนี้ได้ผลสำหรับฉันเมื่อ IDE ของฉันเพิ่มไดเรกทอรีแล้วฉันย้ายไดเรกทอรีที่มีชื่อเดียวกันมาก่อนที่จะถูกส่งไป
ระงับ

ลองสิ่งนี้ แต่ก็ยังทำไม่ได้ ฉันใช้svn checkout --force [url]โฟลเดอร์. svn ที่สร้างขึ้นใหม่
Lex

4

ฉันเพิ่งทำ 'svn revert / blabla' และใช้งานได้โฟลเดอร์กลับมาและฉันสามารถ svn ลบได้


ขอบคุณ ฉันมีปัญหานี้และลองใช้คำแนะนำของคุณและใช้งานได้
Boric

3

เกิดข้อผิดพลาด "Directory 'blah / .svn' ที่มีพื้นที่การทำงาน copy admin หายไป" เกิดขึ้นเมื่อฉันพยายามเพิ่มไดเรกทอรีไปยังที่เก็บ แต่ไม่มีสิทธิ์ระบบไฟล์เพียงพอที่จะทำเช่นนั้น ไดเรกทอรีไม่ได้อยู่ในที่เก็บ แต่มันอ้างว่าอยู่ภายใต้การควบคุมเวอร์ชันหลังจากการเพิ่มล้มเหลว

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


2

เราใช้ maven และ svn เป็นการตรวจสอบที่ผิดพลาดของไดเรกทอรีเป้าหมายไปยัง SVN ที่ทำให้เกิดข้อผิดพลาดนี้ การลบที่แก้ไขทุกอย่างถ้าคำแนะนำนี้ช่วยให้ทุกคน


การลบอะไรออกจากที่ exacly?
DerMike

maven สร้างไดเรกทอรี "เป้าหมาย" เมื่อสร้าง มักจะไม่มีใครคิดว่าจะตรวจสอบในนี้ การเช็คอินแบบเน้นข้อความทำให้เกิดปัญหาสิทธิ์ครั้งต่อไปชำระเงินซึ่งสร้างข้อผิดพลาดนี้ การลบไดเรกทอรี "เป้าหมาย" ออกจาก SVN สามารถแก้ไขปัญหาได้
Madu

2

ฉันพยายามที่svn rm --force /path/to/dirจะไม่เกิดประโยชน์ แต่จบลงด้วยการวิ่งsvn upและมันก็แก้ไขได้สำหรับฉัน


1

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


1

ฉันมีปัญหาเดียวกันเมื่อฉันพยายามเปลี่ยน "C: \ superfolder"

ข้อความผิดพลาด:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

หลังจากพยายาม "ล้างข้อมูล" ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

สารละลาย:

  1. ลบโฟลเดอร์ "โฟลเดอร์ย่อย"
  2. ล้างโฟลเดอร์ "superfolder"
  3. ลองสลับโฟลเดอร์ "superfolder" อีกครั้ง

สิ่งนี้ใช้ได้สำหรับฉัน โปรดแจ้งให้เราทราบหากยังใช้งานได้สำหรับคุณ


1

ฉันมีข้อผิดพลาดนี้เมื่อเร็ว ๆ นี้ มันเกิดจากรากเป็นเจ้าของสองสามไฟล์ในไดเรกทอรีให้ข้อผิดพลาดนี้

หลังจากฉันเปลี่ยนการอนุญาตทุกอย่างทำงานตามที่คาดไว้


1

ไม่ค่อยเข้าใจโพสต์ของคุณมากนัก ทางออกของฉันคือ

  1. ตัดโฟลเดอร์ที่มีปัญหาและคัดลอกไปยังบางตำแหน่ง
  2. รับการแก้ไขจากการโค่นล้มลงในไดเรกทอรีการทำงานอื่น (เพียงใหม่)
  3. เพิ่มโฟลเดอร์ที่คุณบันทึกไปยังสำเนาทำงานใหม่และเพิ่มเป็นโครงการที่มีอยู่ (ถ้าเป็นโครงการเช่นในกรณีของฉัน)
  4. Commit;

1

ฉันมีปัญหานี้ เพียงแค่ย้าย blabla ไปยังตำแหน่งอื่นชั่วคราวบอก svn เพื่อย้อนกลับแล้วย้ายกลับ จะถือว่าเป็นการเพิ่มใหม่ ! ง่าย


1

ง่ายที่สุดที่ช่วยฉัน:

rm -rf _dir_in_question_
svn up

หากคุณมีการเปลี่ยนแปลงใน dir ที่มีปัญหาแล้วนี่ไม่ใช่ทางออกที่ดีสำหรับคุณ


1

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

1) ย้ายโฟลเดอร์ที่มีการละเมิดไปยัง dir บ้านของฉันลบมันออกจาก SVN และกระทำ:

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2) ใส่โฟลเดอร์กลับไปเพิ่มใน SVN แล้วคอมมิทอีกครั้ง:

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

ระคายเคืองเล็กน้อยที่จะต้องกระทำสองครั้ง แต่ดูเหมือนว่าจะทำงานได้ดี


โดยทั่วไปฉันต้องการทำงานกับรหัสแยกต่างหากจากสำเนาการทำงานของ repo (IDEs, คอมไพเลอร์, ตัวแยกวิเคราะห์ข้อผิดพลาด ฯลฯ ไม่ชอบ. svn และไม่มีคำสั่ง 'ทุกคน IGNORE .SVN ยกเว้น EXNPTPT SVN!' ใน Eclipse afaik); ซึ่งหมายความว่ากระบวนการ SVN พื้นฐานสำหรับฉันคือ: 1. สำเนาการทำงานของ repo 2. ลบไดเรกทอรีรากของโครงการฉันมีการอัปเดต 3. คัดลอกและวางไดเรกทอรีโครงการที่อัปเดตไปยังไดเรกทอรีหลักของโครงการในสำเนาการทำงาน 4. svn เพิ่ม - บังคับให้ <projname> 5. ส่งมอบ โดยปกติจะใช้งานได้ แต่สามารถโยนข้อผิดพลาดของ OP ได้เป็นครั้งคราว การแก้ไขของ Jamie Brown ทำงานในกรณีของฉัน
CCJ

0

ในกรณีที่ทุกคนต้องการโซลูชันอื่น:

  1. เช็คอินโฟลเดอร์ใหม่ของคุณเป็น "foldername2"
  2. ไปที่ Tortise SVN repo browser
  3. เปลี่ยนชื่อ "foldername2" เป็น "foldername"
  4. ใน windows explorer ทำการอัพเดต

หวังว่าจะช่วยใครซักคน

-Ev


โซลูชัน Windows เท่านั้น
Raptor

0

สำหรับฉันปัญหาเดียวกันเกิดขึ้นเมื่อฉันทั้งสอง:

  • ลบ ( --force) ไฟล์. map
  • เพิ่ม * .map ไปยังsvn:ignoreผ่านsvn propedit svn:ignore .

ทางออกของฉันคือ:

  1. เลิกทำการเปลี่ยนแปลงคุณสมบัติ
  2. ส่งการเปลี่ยนแปลงไฟล์
  3. ชำระเงินสำเนาใหม่ของที่เก็บ (อนิจจา!)
  4. เปลี่ยนคุณสมบัติและกระทำ

0

ฉันมีปัญหานี้เมื่อฉันพยายามเพิ่มไดเรกทอรีไปยัง svn ฉันแก้ไขมันโดยไปที่เบราว์เซอร์ repo คลิกขวาในหน้าต่างด้านซ้ายเลือกเพิ่มโฟลเดอร์และเพิ่มไดเรกทอรีโดยตรงในเบราว์เซอร์ repo

ฉันลบไดเรกทอรีภายในเครื่อง (หลังจากสำรองข้อมูลแน่นอน) ทำการล้างข้อมูลและปรับปรุง svn และทุกอย่างทำงานได้อีกครั้ง


ฉันอาจเพิ่มว่าสิ่งนี้ถูกเพิ่มลงในไฟล์ "svn sucks" ของฉัน
จุด

0

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


0

งานทั่วไปที่ฉันพบคือต้องใช้ไดเรกทอรี repo หนึ่งรายการใน staging และคัดลอกไปยัง repo อื่น - ทั้งสองภายใต้ SVN และทั้งสองเรียกว่าชื่อเดียวกัน วิธีการทำงานสำหรับฉันคือต่อไปนี้:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.