คุณจะเอาชนะข้อผิดพลาด 'ล้าสมัย' ได้อย่างไร?


337

ฉันพยายามย้ายโครงสร้างไดเรกทอรีจากที่หนึ่งไปอีกที่หนึ่งใน Subversion แต่ฉันได้รับItem '*' is out of dateข้อผิดพลาด commit

ฉันได้ตรวจสอบเวอร์ชั่นล่าสุดแล้ว (เท่าที่ฉันจะบอกได้) svn st -uทำให้ไม่มีความแตกต่างนอกเหนือจากคำสั่ง mv


11
คุณลอง svn up ไหม?
Sklivvz

3
ตัวหลีกเลี่ยงปัญหาเล็กน้อยคือ: หากลบโฟลเดอร์และเนื้อหาให้ลบเฉพาะเนื้อหาก่อน svn จากนั้นลบโฟลเดอร์จากนั้น svn อีกครั้ง
Fattie

หมายเหตุที่เกี่ยวข้อง: subversion.apache.org/docs/release-notes/ …
bahrep

คำตอบ:


637

บางครั้งฉันได้รับสิ่งนี้ด้วย TortoiseSVN บน windows ทางออกสำหรับฉันคือไปsvn updateยังไดเรกทอรีแม้ว่าจะไม่มีการแก้ไขหรือดาวน์โหลด มันทำอะไรบางอย่างกับข้อมูลเมตาซึ่งแก้ไขได้อย่างน่าอัศจรรย์


4
ฉันเปลี่ยน svn: ละเว้นคุณสมบัติของโฟลเดอร์และเริ่มได้รับข้อผิดพลาดล้าสมัย แต่อย่างที่คุณบอกว่าแค่อัปเดตมันก็ใช้งานได้
Sushant

4
เมื่อฉันพยายามอัปเดตไดเรกทอรีนั้นฉันจะได้รับ "svn: รายงานระดับบนสุดสองรายการที่ไม่มีเป้าหมาย" อีกเหตุผลหนึ่งที่ทำให้เกลียด SVN ด้วย git ฉันไม่เคยมีปัญหาโง่ ๆ แบบนี้กับการทำงานพื้นฐานเช่นการย้ายไดเรกทอรี
Dan Dascalescu

ฉันมีข้อผิดพลาด 'ล้าสมัย' ในโฟลเดอร์แม่ของฉันโดยใช้ GUI รุ่น ฉันอัพเดตโฟลเดอร์พาเรนต์และจากนั้นส่งโดยไม่มีข้อผิดพลาด
milesmeow

1
สิ่งนี้ก็เกิดจากการเปลี่ยน svn: ละเว้นสำหรับฉันและ svn update ทำการแก้ไข ขอบคุณ!
Nathan Schwermann

8
ใน Subclipse ใช้ "Team -> Update to HEAD" ทำงานได้ดีกับฉัน
NeoRamza

42

หลังจากลองทุกสิ่งที่ชัดเจนและคำแนะนำอื่น ๆ ที่นี่โดยไม่มีโชค แต่อย่างใดการค้นหาของ Google นำไปสู่ลิงก์นี้ (ลิงก์ไม่ทำงานอีกต่อไป) - การโค่นล้มพูดว่า: ไฟล์หรือไดเรกทอรีของคุณอาจล้าสมัย

สั้น, เคล็ดลับคือการไปที่ไดเรกทอรี .svn (ในไดเรกทอรีที่มีไฟล์ที่กระทำผิด) และลบ "ทุก wcprops" แฟ้ม

ทำงานให้ฉันเมื่อไม่มีอะไรทำ


นั่นมัน! ขอบคุณ! ใครมีคำแนะนำเกี่ยวกับสิ่งที่เกิดขึ้นและวิธีการหลีกเลี่ยงในครั้งแรก?
Jesse Barnum

ทำงานให้ฉัน ในที่สุดฉันก็ต้องลบไฟล์ 'all-wcprops' ทั้งหมด: find -name all-wcprops -exec rm -rf {} \;
Peter Hough

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

+1 นี่คือสิ่งเดียวที่ใช้ได้สำหรับฉัน โซลูชันอื่นไม่ได้
Clayton Dukes

9
ไม่ทำงานสำหรับฉันไม่มีall-wcpropsไฟล์อยู่ใน.svไดเรกทอรี
ulkas

39

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


4
การโค่นล้มจริงจะคัดลอกแล้วลบซึ่งค่อนข้างแตกต่างจากการลบที่นั่นและเพิ่มที่นี่
SnakE

37

ฉันพบว่าสิ่งนี้ใช้ได้กับฉัน:

svn update
svn resolved <dir>
svn commit

ทำงานให้ฉันโดยไม่ทำsvn updateมาก่อนฉันมีสถานการณ์ที่ฉันต้องการหลีกเลี่ยงการอัปเดต (ดังนั้นฉันเพิ่งแก้ไขและกระทำและทำงาน)
BornToCode

นี่เป็นการรักษาสำหรับสถานการณ์ของฉันไม่มีอะไรทำงาน ขอบคุณ!
texasdave

14

พยายามอัปเดตสำเนาในเครื่องและเปลี่ยนรายการที่เป็นปัญหาและยังคงมีข้อผิดพลาด 'ล้าสมัย' สิ่งนี้ทำงานได้ด้วยเหตุผลบางประการ:

svn update --force /path/to/dir/or/file

11

ฉันเพิ่งมีปัญหาเดียวกันในหลาย ๆ โฟลเดอร์และนี่คือสิ่งที่ฉันได้กระทำ:

1) ในมุมมอง "ซิงโครไนซ์ทีม" คลิกขวาที่โฟลเดอร์> แทนที่และอัปเดต
2) ลบโฟลเดอร์อีกครั้ง
3) ยอมรับและมีความสุข


5

ขอบคุณ. ที่เพิ่งแก้ไขให้ฉัน อัปเดต svn - บังคับ / พา ธ ไปยังชื่อไฟล์ /

หากไฟล์ล่าสุดของคุณในไดเรกทอรีท้องถิ่นเหมือนกันจะไม่มีพรอมต์ หากไฟล์แตกต่างกันจะแจ้งให้ tf, mf ฯลฯ ... chosing mf (เต็มเต็ม) ยืนยันว่าไม่มีอะไรถูกเขียนทับและฉันสามารถกระทำได้เมื่อเสร็จสิ้น

Jay CompuMatter



4

เช่นเดียวกับ @ Alexander-Klyubin แนะนำให้ทำการย้ายในพื้นที่เก็บข้อมูล มันจะเร็วขึ้นมากเช่นกันโดยเฉพาะถ้าคุณมีข้อมูลจำนวนมากที่จะย้ายเพราะคุณไม่ต้องถ่ายโอนข้อมูลทั้งหมดนั้นผ่านเครือข่ายอีกครั้ง

svn mv https://username@server/svn/old/ https://username@server/svn/new/

ควรทำงานได้ดี


ฉันมีปัญหากับsvn up; svn mvชุดคำสั่งและสิ่งนี้ได้ทำอย่างดี ขอบคุณ.
DopeGhoti

3

ลบไฟล์หรือพา ธ ของคุณโดยใช้ก่อนดำเนินการคำสั่ง bk ของการเปลี่ยนแปลงของคุณ

sudo rm -r /path/to/dir/

หลัง:

svn up and commit or delete 

2

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

มีการสนทนาเกี่ยวกับสิ่งนี้ใน http://svn.haxx.se/users/archive-2007-01/0170.shtml


สมมติว่าคุณต้องการตรวจสอบสำเนาเก่าหรือไม่ อะไรคือวิธีที่ง่ายที่สุดในการทำให้การเช็คอินทำงาน?
OJW

หากคุณกำลังพูดถึงการคืนค่าสำเนาเก่าให้ตรวจสอบตามปกติ มันจะได้รับหมายเลขการแก้ไขใหม่
jgreep


2

มีอย่างน้อยหนึ่งสาเหตุของข้อความข้อผิดพลาด "ล้าสมัย" ในกรณีของฉันปัญหาคือ. svn / dir-props ซึ่งสร้างขึ้นโดยการเรียกใช้ "svn propset svn: ละเว้น -F .gitignore" สำหรับครั้งแรก. การลบ. svn / dir-props ดูเหมือนเป็นความคิดที่ไม่ดีและอาจทำให้เกิดข้อผิดพลาดอื่น ๆ ดังนั้นจึงควรใช้ "svn propdel" เพื่อทำความสะอาด "svn propset" ที่หลงทาง

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.

2

หากคุณกำลังใช้สะพาน gitub svn อาจเป็นเพราะมีบางอย่างเปลี่ยนไปที่ด้านข้างของสิ่งที่ github วิธีแก้ปัญหานั้นง่ายคุณเพียงแค่เรียกใช้svn switchซึ่งจะช่วยให้สามารถค้นหาตัวเองได้อย่างถูกต้องจากนั้นอัปเดตและทุกอย่างจะทำงานได้ เพียงเรียกใช้สิ่งต่อไปนี้จากรากของเช็คเอาต์

svn info | grep Relative 
svn switch path_from_previous_command
svn update

หรือ

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

พื้นฐานสำหรับการแก้ปัญหานี้มาจากบล็อกของ Lee Preimesberger


1

คุณกำลังจะย้ายมันโดยใช้svn mvหรือเพียงแค่mv? ฉันคิดว่าการใช้เพียงแค่mvอาจทำให้เกิดปัญหานี้


1

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


1
ฉันจะหลีกเลี่ยงการเปลี่ยนเนื้อหาที่เก็บ (ลบ svn) เพียงเพราะเช็คเอาต์ในพื้นที่ของฉันเสียหายอย่างใด
Lars Noschinski

1

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


1

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


1

ฉันทำสิ่งนี้และมันได้ผลสำหรับฉัน:
1. สำรองไฟล์ของคุณ คุณสามารถคัดลอกรหัสของคุณไปยังไฟล์ข้อความ
2. คลิกขวาที่ไฟล์ที่คุณต้องการส่ง >> ทีม >> แสดงประวัติ 3. ในแผง "แสดงประวัติ" คุณจะเห็นการแก้ไขทั้งหมดของไฟล์นั้น คลิกขวาที่การแก้ไขล่าสุดของไฟล์ >> รับการแก้ไข: มันจะแทนที่การเปลี่ยนแปลงในเครื่องของคุณ
4. รวมรหัสของคุณเข้ากับไฟล์ล่าสุดด้วยไฟล์สำรอง (ขั้นตอนที่ 1)
5. ซิงโครไนซ์และคอมมิตไฟล์ที่ผสานใหม่


1

อัปเกรดเซิร์ฟเวอร์และไคลเอนต์ของคุณเป็น Subversion 1.9

หากเกิดout of dateข้อผิดพลาดแบบสุ่มเมื่อไม่ควรทำตามปกติเมื่อคุณเรียกใช้ยอมรับมันอาจบ่งบอกว่าคุณกำลังใช้ Subversion 1.7 หรือล้าสมัยและไม่รองรับไคลเอ็นต์หรือเซิร์ฟเวอร์เก่า

คุณควรอัพเกรดเซิร์ฟเวอร์และไคลเอนต์เพื่อแก้ไขปัญหา ดูที่เกี่ยวข้องการโค่นล้ม 1.9 หมายเหตุรีลีสรายการ: "ออกไปจากวันที่" ข้อผิดพลาดเมื่อการกระทำมากกว่า HTTPv1


1
เรื่องนี้เกิดขึ้นกับฉันด้วย TortoiseSVN 1.8.8 บน Windows การอัปเดตเป็น 1.9 ช่วย
Martin Pecka

1

ข้อผิดพลาดเป็นเพราะคุณไม่ได้อัปเดตไฟล์นั้นโดยเฉพาะอัปเดตก่อนจากนั้นมีเพียงคุณเท่านั้นที่สามารถส่งไฟล์ได้


1

พยายามทั้งหมดยกเว้นการเปลี่ยนแปลงใน. svn โดยตรง ไม่มีอะไรช่วยได้นี่เป็นวิธีแก้ปัญหาของฉัน

ใน Eclipse> หน้าต่าง> แสดงมุมมอง> ประวัติฉันเห็นว่าไฟล์นั้นไม่ได้อยู่ในการแก้ไขใหม่ล่าสุดแม้ว่าฉันจะทำ svn "Override & Update" / "Revert" / ลบไฟล์และเช็คเอาต์หลาย svn

ดังนั้นผมจึงไปแพคเกจ Explorer ที่> คลิกขวาที่ไฟล์> แทนที่ด้วย> ล่าสุดจากพื้นที่เก็บข้อมูล

อีกรูปแบบหนึ่งในมุมมองประวัติแสดงให้เห็นว่าขณะนี้ไฟล์อยู่ในการแก้ไขล่าสุด


1

"Clean Up" คุณจะได้รับการติดตาม

คลิกขวาที่โฟลเดอร์ svn และคลิก 'Clean Up' ทำเช่นนี้หากคุณได้รับข้อผิดพลาดนั้น


0

สิ่งนี้เกิดขึ้นเมื่อฉันอัพเดทสาขาของรีลีสก่อนหน้าด้วยไฟล์จาก trunk ฉันใช้ Windows Explorer เพื่อคัดลอกโฟลเดอร์จากโฟลเดอร์เช็คเอาต์ลำต้นและวางลงในมุมมอง Eclipse ของโฟลเดอร์เช็คเอาต์สาขา ขณะนี้ Windows Explorer ได้รับการกำหนดค่าไม่ให้แสดงไฟล์ "ซ่อน" ที่ขึ้นต้นด้วย "." ดังนั้นฉันจึงลืมไฟล์. svn ที่ไม่ถูกต้องทั้งหมดที่ถูกวางลงในโฟลเดอร์ชำระเงินสาขาของฉัน Doh!

ทางออกของฉันคือการระเบิดโครงการ Eclipse ที่เสียหายตรวจสอบอีกครั้งจากนั้นคัดลอกไฟล์ใหม่ด้วยความระมัดระวังยิ่งขึ้น ฉันเปลี่ยน Windows เพื่อแสดงไฟล์ "ซ่อน"


0

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


0

ในกรณีของฉันการลบเฉพาะรุ่นท้องถิ่นและการชำระเงินสำเนาใหม่เป็นวิธีแก้ปัญหา


0

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


0

ในการแก้ปัญหาฉันต้องคืนค่าไฟล์ที่มีปัญหาและอัปเดตสำเนาการทำงานของฉันและหลังจากนั้นฉันแก้ไขไฟล์อีกครั้งและหลังจากขั้นตอนเหล่านี้ข้อผิดพลาดไม่ได้เกิดขึ้นอีก


0

เพียงแค่ svn ขึ้นไปในบรรทัดคำสั่งหรือถ้าคุณอยู่ใน windows เลือกตัวเลือกการปรับปรุง svn

  • เมื่อดำเนินการเสร็จแล้วสิ่งนี้จะช่วยให้คุณดำเนินการต่อไปเช่นการกระทำและอื่น ๆ

0

ฉันเพิ่งได้รับสิ่งนี้ขณะที่ฉันพยายามหาcommitจากtrunkไดเรกทอรี การทำsvn updateจากtrunkไดเรกทอรีไม่สามารถแก้ไขข้อผิดพลาดได้ อย่างไรก็ตามการทำsvn updateจากไดเร็กทอรีพาเรนต์ (ซึ่งเป็นเจ้าของ.svnไดเร็กทอรี) ได้แก้ไขข้อผิดพลาด

เดาของฉันเกี่ยวกับสิ่งที่เกิดขึ้น (กรณีการใช้งานในหมู่อื่น ๆ อาจมีหลายสาเหตุสำหรับ "svn: E160024: ทรัพยากรล้าสมัยลองอัปเดต"): พร้อมtrunkด้วยมีbranchesไดเรกทอรี ฉันดึงbranches/branch-1เข้าmasterจาก GitHub ทำsvn updateจากไดเรกทอรีแม่ (นั่นคือรากของสำเนาการทำงานของฉัน) แทนtrunkดูเหมือนว่าจะมีบางสิ่งบางอย่างที่ทำในนอกเหนือไปจากbranches trunkเมื่อฉันพยายามcommitอีกครั้งไม่มีข้อผิดพลาด

อย่างไรก็ตามอย่างที่ฉันได้กล่าวไว้ข้างต้นนี่เป็นกรณีหนึ่งในหมู่คนอื่น ๆ

หมายเหตุด้านข้าง: ซึ่งแตกต่างจากสิ่งที่มีคนแนะนำฉันไม่เชื่อว่าเป็นความคิดที่ดีที่จะเล่นด้วยตนเองใน.svnไดเรกทอรี

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