โฟลเดอร์ที่ถูกขัดขวางในการโค่นล้ม


131

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

เมื่อฉันลองใช้cleanupคำสั่งฉันได้รับ "ชื่อโฟลเดอร์ไม่ใช่ไดเร็กทอรีที่ใช้งานได้" นี่คือโฟลเดอร์ที่ฉันเพิ่งสร้างใน VS และเมื่อฉันพยายามเพิ่มลงใน Subversion มันทำให้ฉันมีข้อผิดพลาดนั้น โฟลเดอร์อื่น ๆ ทั้งหมดใช้ได้


คุณได้รับ 'สิ่งกีดขวาง' ในการดำเนินการเพิ่มหรือไม่?
Sander Rijken

คำตอบ:


113

เกิดขึ้นเมื่อคุณลบหรือย้ายไดเร็กทอรีย่อย. svn (โดยไม่ผ่านคำสั่ง SVN) ดังนั้น SVN จึงมีมุมมองที่เสียหายของสำเนาที่ใช้งานได้

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


1
แปลก. ฉันต้องชำระเงินของโฟลเดอร์นี้ โฟลเดอร์นี้มีอยู่ก่อนในที่เก็บ จากนั้นฉันลบมันโดยไม่ใช้คำสั่ง svn delete ด้วยการตรวจสอบย้อนกลับและดำเนินการแก้ไขปัญหา จากนั้นในไฟล์. css อื่นที่ฉันไม่ได้เปลี่ยนชื่อลบและแก้ไขมันเท่านั้นฉันต้องทำการอัปเดต svn เพราะฉันได้รับปัญหาแปลก ๆ กับสิ่งนั้น (ข้อความที่แตกต่างกัน)
PositiveGuy

1
ดีพระเจ้าฉันพยายามทำตามสำเนาของโครงการนี้ที่ฉันมีในไดรฟ์ภายนอกไม่ใช่สำเนาที่ใช้งานได้จากไดรฟ์ในเครื่องของฉัน ดุจ
PositiveGuy

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

1
สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันย้ายทั้งโฟลเดอร์โดยการคัดลอกโฟลเดอร์ไปยังโฟลเดอร์อื่นโดยใช้ Visual Studio 2008 แทนที่จะใช้ Windows Explorer
MacGyver

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

9

โดยไม่ทราบว่าสาเหตุนี้เป็นอย่างไรวิธีแก้ไขสามารถส่งออกสำเนาที่ใช้งานได้ (การชำระเงินทั้งหมดที่คุณมีในเครื่อง) ไปยังที่อื่น

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

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

ฉันเคยเห็นข้อผิดพลาดเหล่านี้มาก่อนเมื่อมีคนตรวจสอบสำเนาการทำงานในสำเนาการทำงานอื่น ๆ หรือสิ่งอื่นใดที่ทำให้รายการ. svn เสียหาย


ที่แก้ไขให้ฉัน ขอบคุณ!
Patrick

11
ฉันคิดว่าวิธีแก้ปัญหาคือติด SVN ในถังขยะและเปลี่ยนไปใช้ระบบควบคุมเวอร์ชันที่ไม่ใช่ขยะ ขอโทษ ... ฉันแค่หงุดหงิด
Phil Hale

5

มีปัญหาเดียวกันและได้รับการแก้ไขดังนี้:

  • เปลี่ยนชื่อผบ
  • สร้าง dir ด้วยชื่อเดิมใน SVN (เช่น svn mkdir)
  • อัปเดตโฟลเดอร์หลักดังนั้น dir ที่สร้างขึ้นใหม่จะปรากฏในสำเนาการทำงานของฉัน
  • คัดลอกไฟล์จากสิ่งกีดขวางไปยัง dir ที่สร้างขึ้นใหม่และส่งมอบ

4

หากคุณใช้ระบบ * nix ตรวจสอบให้แน่ใจว่าคุณไม่ได้สร้างไฟล์เพิ่มลงใน SVN จากนั้นลบออกแทนที่ด้วยโฟลเดอร์ที่มีชื่อเดียวกัน ไม่ได้ช่วย OP แต่หวังว่ามันจะช่วยให้ใครบางคนหายเครียดได้


1

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

(ถอดความจากไฟล์ช่วยเหลือไคลเอ็นต์ Tortoise SVN)


1

ไม่มีอะไรได้ผลสำหรับฉันดังนั้นฉันจึงทำสิ่งต่อไปนี้:

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

1

มีสถานการณ์ที่แตกต่างกันที่อาจทำให้เกิดสถานการณ์นี้ นี่คือตัวอย่างหนึ่ง:

ฉันลงเอยด้วย! ทำเครื่องหมายบนไดเร็กทอรีที่เปลี่ยนชื่อจาก www เป็น www_a โดยไม่ใช้คำสั่ง 'svn rename':

  1. เปลี่ยนชื่อไดเร็กทอรีปัจจุบันที่มีชื่อดั้งเดิมเช่น www_b
  2. เปลี่ยนชื่อ www_a กลับเป็น www
  3. ตรวจสอบให้แน่ใจว่าคุณทำการ 'svn update' หรือ 'svn revert' ในไดเร็กทอรี www
  4. ลบไดเรกทอรี www ล่าสุดโดยไม่ใช้ 'svn delete'
  5. ไปที่ไดเร็กทอรีหลักและปัญหา 'svn update'
  6. การดำเนินการนี้จะคืนค่าไดเรกทอรี www ดั้งเดิม
  7. คราวนี้ใช้ 'svn rename' เพื่อเปลี่ยนชื่อ www เป็น www_a
  8. เปลี่ยนชื่อ www_b กลับเป็น www
  9. ใช้ 'svn add' เพื่อเพิ่มลงในที่เก็บ

คุณควรได้รับไดเร็กทอรีงาน svn ที่ถูกต้อง ณ จุดนี้ และเรียนรู้สิ่งหนึ่งหรือสองอย่างเกี่ยวกับวิธีแก้ไขความสับสนของไดเร็กทอรี svn


1

ประสบปัญหานี้ในเครื่อง Windows

ฉันได้ตรวจสอบไดเรกทอรีก่อนที่จะตรวจสอบโครงการทั้งหมดที่เป็นของ มันทำให้เกิดปัญหา "ขัดขวาง" สำหรับฉัน

ฉันเพิ่งลบโฟลเดอร์นั้นและเรียกใช้การอัปเดตจากรูท (ของโฟลเดอร์นั้น) มันทำงานได้ดี

คำสั่งเช่นการล้างข้อมูล ฯลฯ ไม่ได้ผลสำหรับฉัน

คำเตือนบางประการ:

  1. ซึ่งมีค่าใช้จ่ายสูงหากโฟลเดอร์มีขนาดใหญ่
  2. มันจะทำให้คุณสูญเสียการเปลี่ยนแปลงทั้งหมดหากมี

สิ่งที่ดีที่สุด


1

ฉันเคยเห็นสิ่งนี้บน Windows เมื่อฉันสร้างลิงก์สัญลักษณ์ไปยังไดเร็กทอรีที่เก็บ ในกรณีนี้รูทที่เก็บจะถูกมองว่า "ถูกขัดขวาง" สิ่งนี้ดูเหมือนจะไม่ส่งผลกระทบใด ๆ

ขั้นตอนในการสร้างซ้ำ:

  1. ชำระเงิน repo ของคุณ

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
    
  2. ตรวจสอบว่าไดเร็กทอรีของคุณใช้ได้

    cd plugin_dir
    svn st -u
    

    ผลลัพธ์ควรเป็น

    Status against revision: 1234
    
  3. สร้าง symlink (ซึ่งแสดงปัญหา)

    cd ..
    mklink /d link_dir plugin_dir
    cd link_dir
    svn st -u
    

    ผลลัพธ์จะเป็น

    ~           1234  .
    Status against revision: 1234
    

0

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

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

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


0

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

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


0

ฉันได้รับสถานะ "ขัดขวาง" บนไดเรกทอรีเมื่อฉันทำการอัปเดต CMS (WordPress หรือ Drupal) ผ่านทางเว็บอินเทอร์เฟซ - แอปพลิเคชันไม่ทราบว่าโค้ดของมันเป็นสำเนาที่ใช้งานได้ในการโค่นล้มดังนั้นเมื่ออัปเดตปลั๊กอินจะลบปลั๊กอินนั้นออก ไดเร็กทอรี (รวมถึง.svnไดเร็กทอรี) และลดลงในไดเร็กทอรีใหม่จากปลั๊กอินเวอร์ชันใหม่

เพื่อรับ.svndir นั้นกลับจากไดเร็กทอรีที่มี dir ที่ถูกขัดขวาง --forceฉันทำเช็คเอาท์ด้วย ตัวอย่างเช่นหากplugin_dirถูกทำเครื่องหมาย "~" จากไดเร็กทอรีหลักที่ฉันเรียกใช้:

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir

ไฟล์ใด ๆ ที่เหลืออยู่แล้วและมีเครื่องหมาย "E" ที่เอาต์พุตของคำสั่ง checkout (ทำเครื่องหมายเป็น "M" เมื่อฉันเรียกใช้svn status)

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


0

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


ใช่ฉันต้องลบโฟลเดอร์ของฉันมันเสียหาย ... โฟลเดอร์. svn
PositiveGuy

0

สิ่งนี้อาจเกิดขึ้นได้เมื่อคุณอัปเกรดการโค่นล้มของคุณเป็นเวอร์ชันที่ XCode ไม่รองรับ


0

นี่เป็นวิธีที่ง่ายที่สุด (และปลอดภัยที่สุด) ที่ฉันพบในการแก้ไขปัญหานี้:

  1. เปลี่ยนชื่อไฟล์หรือไดเร็กทอรีที่ละเมิดชั่วคราว (หรือไดเร็กทอรีหลัก) ที่ถูกขัดขวาง (เช่นเพิ่ม ".backup")
  2. ลบ.svnไดเร็กทอรีใด ๆภายในไดเร็กทอรีที่เปลี่ยนชื่อ (ถ้ามี)
  3. svn revert วัตถุที่เปลี่ยนชื่อ (และขาดหายไป) จากขั้นตอนที่ 1
  4. svn delete วัตถุที่เปลี่ยนกลับ
  5. เปลี่ยนชื่อข้อมูลสำรองใหม่จากขั้นตอนที่ 1 กลับเป็นชื่อเดิม
  6. เพิ่มและเช็คอินออบเจ็กต์ที่เปลี่ยนชื่อกลับเป็น svn เป็นอ็อบเจกต์ใหม่

0

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


0

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

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