SVN (การโค่นล้ม) ปัญหา“ ไฟล์ถูกกำหนดเวลาสำหรับการเพิ่ม แต่ขาดหายไป” - การใช้เวอร์ชัน


98

ฉันใช้เวอร์ชันสำหรับ SVN

ฉันพยายามที่จะยอมรับและได้รับข้อความนี้:

คอมมิตล้มเหลว (รายละเอียดติดตาม): '/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf' ถูกกำหนดไว้สำหรับการเพิ่ม แต่ขาดหายไป

ฉันคิดว่านี่เป็นเพราะฉันได้เพิ่มไฟล์ลงใน repo แล้วลบไฟล์เหล่านั้นผ่านระบบไฟล์

ฉันต้องการเพียงแค่จดบันทึกการเปลี่ยนแปลงของฉันและนำการเปลี่ยนแปลงไปใช้กับ repo

ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร?

คำตอบ:


124

ฉันไม่แน่ใจว่าคุณกำลังพยายามทำอะไร: หากคุณเพิ่มไฟล์ผ่าน

svn add myfile

คุณบอกเพียง SVN ที่จะนำไฟล์นี้ลงพื้นที่เก็บข้อมูลของคุณเมื่อคุณทำกระทำของคุณต่อไป ไม่มีการเปลี่ยนแปลงที่เก็บก่อนที่คุณจะพิมพ์ไฟล์

svn commit

หากคุณลบไฟล์ก่อนคอมมิตให้svnมีในเร็กคอร์ด (เนื่องจากคุณเพิ่ม) แต่ไม่สามารถส่งไปยังที่เก็บได้เนื่องจากไม่มีไฟล์อยู่แล้ว

ดังนั้นคุณต้องการบันทึกไฟล์ในที่เก็บแล้วลบออกจากสำเนาที่ใช้งานของคุณ: ในกรณีนี้ให้ลองดึงไฟล์ของคุณกลับมา (จากถังขยะ?) ทำการคอมมิตและลบไฟล์ในภายหลังผ่านทาง

svn delete myfile
svn commit

หากคุณต้องการยกเลิกaddและเพียงแค่โยนไฟล์ทิ้งไปคุณสามารถไปที่ไฟล์

svn revert myfile

ซึ่งบอกsvn(ในกรณีนี้) ให้ยกเลิกการดำเนินการเพิ่มเติม

แก้ไข

ขออภัยฉันไม่ทราบว่าคุณกำลังใช้ไคลเอนต์ GUI "เวอร์ชัน" สำหรับ Max OSX ดังนั้นให้ลองเปลี่ยนกลับในไดเร็กทอรีที่มีโดยใช้ GUI หรือกระโดดลงไปในน้ำเย็นและเปิดเชลล์คำสั่ง Mac ที่ซ่อนอยู่ :-) (เรียกว่า "Terminal" ใน OSX ของเยอรมันไม่รู้ว่าจะนำมาเป็นภาษาอังกฤษได้อย่างไร รุ่น ... )


2
ปัญหาคือเขาใช้ GUI หากเขาสามารถใช้บรรทัดคำสั่งได้เขาก็สามารถsvn rmใช้ไฟล์ได้แม้ว่าจะไม่มีอยู่ในไดเร็กทอรีก็ตาม
Pikrass

ตกลงฉันไม่ทราบไคลเอ็นต์ "เวอร์ชัน" สำหรับ OSX เขาควรจะใช้ "ย้อนกลับ" ได้แล้วใช่ไหม? ซึ่งจะใช้ได้กับ TortoiseSVN บน Windows
MartinStettner

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

1
svn add *จะเพิ่มใหม่ไฟล์ unversioned ที่ทุกsvn commitทันทีบันทึกการเปลี่ยนแปลงเหล่านี้เพื่อเก็บข้อมูล Afaik ไม่มีการดำเนินการที่เทียบเท่ากันสำหรับการลบดังนั้นหากคุณลบไฟล์คุณต้องโทรsvn rmด้วยตนเอง
MartinStettner

เพียง FYI, ฉันยังมีปัญหานี้และsvn rmถึงแม้จะมี--forceไม่ทำงาน - does not existมันบอกว่า ดังนั้นsvn revertเป็นสิ่งที่ถูกต้องที่จะทำที่นี่
Michel Müller

25

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

โดยทั่วไป Versions (จริงๆแล้ว Subversion) คิดว่าคุณยังต้องการเพิ่มไฟล์ แต่ไม่สามารถค้นหาได้เนื่องจากคุณลบออกในระบบไฟล์ ตัวเลือก Revert จะบอกให้ Subversion ลืมเพิ่ม


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

10

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

คำตอบคือการยกเลิกการเพิ่มของคุณหรืออีกวิธีหนึ่งคือยอมรับไฟล์จากนั้นใช้ 'svn rm' เพื่อลบออกจากระบบไฟล์และ repo


ฉันได้รับสิ่งนี้จาก Xcode ที่ฉันเพิ่มไฟล์และทำผิดหรืออะไรบางอย่างและบอกให้ Xcode ลบ (ย้ายไปที่ถังขยะ) น่าเสียดายที่ Xcode ปล่อยให้อยู่ในสถานะนี้และไม่ทำการ rm จาก svn ให้ฉันแม้ว่ามันจะลบไฟล์ ...
chadbag

3

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

svn add folder_path/*
svn commit -m "message"

2

หลีกเลี่ยงการใช้ Xcode เพื่อเปลี่ยนชื่อไฟล์ในการอ้างอิงโฟลเดอร์ หากคุณเปลี่ยนชื่อไฟล์โดยใช้ Xcode ไฟล์นั้นจะถูกทำเครื่องหมายเพื่อกระทำ หากคุณลบทิ้งในภายหลังก่อนที่จะกระทำคุณจะพบข้อผิดพลาดนี้


0

ฉันเพิ่งลบไฟล์จากภายใน VS จากนั้นจาก 'Repository Explorer' ฉันคัดลอกไฟล์ไปยังสำเนาที่ใช้งานได้


0

หากคุณใช้ TortoiseSVN ...

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

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