Bagaimana Anda mengatasi kesalahan 'ketinggalan zaman'?


337

Saya telah mencoba memindahkan struktur direktori dari satu lokasi ke lokasi lain di Subversion, tetapi saya mendapatkan Item '*' is out of datekesalahan komit.

Saya telah memeriksa versi terbaru (sejauh yang saya tahu). svn st -uternyata tidak ada perbedaan selain perintah mv.


11
Apakah Anda mencoba svn up?
Sklivvz

3
penghindar masalah sepele adalah: jika menghapus folder dan konten, hapus hanya konten terlebih dahulu, svn, lalu hapus folder, kemudian svn lagi.
Fattie

Jawaban:


637

Saya terkadang mendapatkan ini dengan TortoiseSVN di windows. Solusi bagi saya adalah ke svn updatedirektori, meskipun tidak ada revisi untuk diunduh atau diperbarui. Itu melakukan sesuatu pada metadata, yang secara ajaib memperbaikinya.


4
Saya mengubah properti svn: diabaikan dari folder, dan mulai mendapatkan kesalahan kedaluwarsa. Tetapi seperti yang Anda katakan, hanya memperbarui itu berhasil.
Sushant

4
Ketika saya mencoba memperbarui direktori itu, saya mendapatkan "svn: Dua laporan tingkat atas tanpa target" Satu lagi alasan untuk membenci SVN. Dengan git, saya tidak pernah memiliki masalah bodoh dengan operasi dasar seperti memindahkan direktori.
Dan Dascalescu

Saya memiliki kesalahan 'ketinggalan zaman' pada folder induk saya menggunakan Versi GUI. Saya memperbarui folder induk dan kemudian melakukan tanpa kesalahan.
milesmeow

1
ini juga disebabkan oleh perubahan svn: abaikan untuk saya dan pembaruan svn memperbaikinya. Terima kasih!
Nathan Schwermann

8
Dalam Subclipse gunakan "Team -> Update to HEAD". Bekerja dengan baik dengan saya.
NeoRamza

42

Setelah mencoba semua hal yang jelas, dan beberapa saran lainnya di sini, tanpa hasil apa pun, pencarian Google mengarah ke tautan ini (tautan tidak berfungsi lagi) - Subversion mengatakan: File atau direktori Anda mungkin kedaluwarsa

Singkatnya, triknya adalah pergi ke direktori .svn (dalam direktori yang berisi file yang menyinggung), dan hapus file "all-wcprops" .

Bekerja untukku ketika tidak ada yang lain.


Itu berhasil! Terima kasih! Adakah yang punya saran tentang bagaimana ini terjadi dan bagaimana menghindarinya?
Jesse Barnum

Bekerja untukku. Saya akhirnya harus menghapus semua file 'all-wcprops': find. -nama all-wcprops -exec rm -rf {} \;
Peter Hough

Saya rasa Anda harus bisa menyelesaikan ini dengan alat svn dan pilihan, tanpa menghapus file dalam struktur
augusto

+1, ini adalah satu-satunya hal yang berhasil untuk saya. Solusi lain tidak.
Clayton Dukes

9
tidak bekerja untuk saya, tidak ada all-wcpropsfile di dalam .svdirektori
ulkas

39

Saya percaya masalah ini berasal dari file .svn. Entah itu salah di orangtua lama, orangtua baru atau yang lama. Saya akan mencoba kembali ke titik awal Anda. Gunakan ekspor untuk mendapatkan salinan folder yang bersih. Pindahkan salinan bersih ke lokasi baru, dan gunakan tambah dan hapus untuk melakukan pindah. Itu secara manual melakukan apa yang dilakukan SVN, tetapi mungkin berhasil.


4
Subversi sebenarnya menyalin lalu menghapus, yang agak berbeda dengan menghapus di sana dan menambahkan di sini.
SnakE

37

Saya telah menemukan bahwa ini bekerja untuk saya:

svn update
svn resolved <dir>
svn commit

Bekerja untuk saya tanpa melakukan svn updatesebelumnya, saya memiliki skenario di mana saya ingin menghindari pembaruan. (jadi saya baru saja menyelesaikan dan melakukan dan berhasil)
BornToCode

ini adalah obat untuk situasi saya, tidak ada yang berhasil. Terima kasih!
texasdave

14

Mencoba memperbarui salinan lokal, dan mengembalikan item yang dimaksud, dan masih mendapatkan kesalahan 'ketinggalan zaman'. Ini berhasil karena beberapa alasan:

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

11

Saya baru saja mengalami masalah yang sama di beberapa folder dan inilah yang saya lakukan untuk melakukan:

1) Dalam perspektif "Sinkronisasi Tim", klik kanan pada folder> Override dan Perbarui
2) Hapus folder lagi
3) Komit dan bahagia


5

Terima kasih. Itu baru saja menyelesaikannya untuk saya. pembaruan svn - memaksa / path ke nama file /

Jika file terbaru Anda di direktori lokal sama, tidak ada konfirmasi. Jika file berbeda, ia meminta tf, mf dll ... memilih ponsel mf (milik saya penuh) memastikan tidak ada yang ditimpa dan saya dapat melakukan ketika selesai.

Jay CompuMatter


5

Saya berhasil menyelesaikannya dengan menekan tombol pembaruan


4

Seperti yang disarankan @ Alexander-Klyubin, lakukan langkah dalam repositori. Ini juga akan menjadi jauh lebih cepat, terutama jika Anda memiliki sejumlah besar data untuk dipindahkan, karena Anda tidak perlu mentransfer semua data itu melalui jaringan lagi.

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

harus bekerja dengan baik


Saya mengalami masalah ini dengan svn up; svn mvseri perintah, dan ini berhasil dengan baik. Terima kasih.
DopeGhoti

3

Hapus file Anda atau jalur Anda menggunakan sebelum menjalankan perintah lakukan bk perubahan Anda

sudo rm -r /path/to/dir/

setelah:

svn up and commit or delete 

2

Apakah Anda yakin sudah memeriksa kepala dan bukan revisi yang lebih rendah? Juga, sudahkah Anda melakukan pembaruan untuk memastikan Anda mendapatkan versi terbaru?

Ada diskusi tentang ini http://svn.haxx.se/users/archive-2007-01/0170.shtml .


Katakanlah Anda ingin checkin salinan lama? Lalu bagaimana cara termudah untuk membuat checkin berfungsi?
OJW

Jika Anda berbicara tentang mengembalikan salinan lama, cukup periksa seperti biasa. Ini akan mendapatkan nomor revisi baru.
jgreep


2

Setidaknya ada satu penyebab lain dari pesan "out of date" error. Dalam kasus saya masalahnya adalah .svn / dir-props yang dibuat dengan menjalankan "svn propset svn: abaikan -F .gitignore." untuk pertama kalinya. Menghapus .svn / dir-props sepertinya ide yang buruk dan dapat menyebabkan kesalahan lain, jadi mungkin yang terbaik adalah menggunakan "svn propdel" untuk membersihkan "svn propset" yang salah.

# 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

Jika Anda menggunakan jembatan github svn, kemungkinan karena sesuatu berubah di sisi github. Solusinya sederhana, Anda hanya perlu menjalankan svn switch, yang memungkinkannya menemukan dirinya sendiri, kemudian memperbarui dan semuanya akan berfungsi. Jalankan saja berikut ini dari akar checkout Anda

svn info | grep Relative 
svn switch path_from_previous_command
svn update

atau

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

Dasar untuk solusi ini berasal dari blog Lee Preimesberger


1

Apakah Anda memindahkannya menggunakan svn mv, atau hanya mv? Saya pikir menggunakan hanya mvdapat menyebabkan masalah ini.


1

Saya memindahkan dir ke mesin lokal saya untuk menjaga keamanan, kemudian svn menghapus direktori bodoh, kemudian melakukan. Ketika saya mencoba untuk menambahkan folder dari mesin lokal saya MASIH melemparkan kesalahan (SVN bergerak melakukan hal yang sama ketika saya mencoba untuk mengganti nama folder). Jadi saya kembali, lalu saya melakukan DIrNAME mkdir, menambahkan, dan berkomitmen. Kemudian saya menambahkan konten dan berkomitmen, dan itu berhasil.


1
Saya akan menghindari dengan mengubah konten repositori (svn delete), hanya karena checkout lokal saya entah bagaimana rusak.
Lars Noschinski

1

Saya menerima kesalahan ini secara acak setelah menghapus beberapa direktori yang masing-masing berisi beberapa file. Saya menghapus direktori melalui Netbeans dan menyadari bahwa itu tidak benar-benar menghapusnya. Tampaknya hanya menghapus segala sesuatu di dalam direktori dan menghapus referensi ke direktori di dalam Netbeans. Mereka masih ada di sistem file. Pastikan mereka dihapus dari sistem file dan coba komit lagi.


1

Jika pernah memecahkan masalah yang sama dengan hanya memeriksa copy pekerjaan baru dan mengganti direktori .svn melempar kesalahan komit dengan yang baru diperiksa ini. Alasan dalam kasus saya adalah bahwa setelah repositori rusak dan memulihkan dari cadangan, copy pekerjaan menunjuk ke revisi yang tidak ada di repositori yang dipulihkan. Juga ada kesalahan "item kedaluwarsa". Memperbarui copy pekerjaan sebelum komit tidak menyelesaikan masalah ini tetapi mengganti .svn seperti yang dijelaskan di atas.


1

Saya melakukan ini dan itu berhasil untuk saya:
1. Ambil cadangan file Anda. Anda cukup menyalin kode Anda ke file teks.
2. Klik kanan file yang ingin Anda komit >> Tim >> Show History. 3. Pada Panel "Show History" Anda akan melihat semua revisi file itu. Klik kanan pada revisi terbaru file >> Dapatkan Revisi: Ini akan menimpa perubahan lokal Anda.
4. Sekarang, gabungkan kode Anda dengan file terbaru dengan file cadangan (langkah # 1).
5. Sinkronisasi dan Komit file yang baru digabungkan.


1

Tingkatkan server dan klien Anda ke Subversion 1.9.

Jika out of datekesalahan terjadi secara acak padahal seharusnya tidak, saat Anda menjalankan komit, itu mungkin menunjukkan bahwa Anda menggunakan Subversion 1.7 yang lebih lama dan tidak didukung klien atau server.

Anda harus memutakhirkan server dan klien untuk menyelesaikan masalah. Lihat entri Subversion 1.9 Release Notes yang relevan: kesalahan "out of date" ketika melakukan lebih dari HTTPv1 .


1
Ini bahkan terjadi pada saya dengan TortoiseSVN 1.8.8 di Windows. Memperbarui ke 1.9 membantu.
Martin Pecka

1

Kesalahan adalah karena Anda tidak memperbarui file tertentu, pembaruan pertama maka hanya Anda yang dapat melakukan file.


1

Mencoba semua kecuali ganti .svn secara langsung. Tidak ada yang membantu jadi inilah solusi saya.

Dalam Eclipse> Window> Show View> History Saya telah melihat file itu bukan pada Revisi terbaru, meskipun saya membuat beberapa svn "Override & Update" / "Revert" / hapus file dan checkout.

Jadi saya pergi Package Explorer> Klik kanan pada file> Ganti dengan> Terbaru dari Repositori .

Tampilan lain di History View menunjukkan bahwa file itu sekarang dalam revisi terbaru.


1

"Bersihkan" Ini akan membuat Anda di jalur.

Klik kanan pada folder svn dan klik 'Bersihkan', lakukan ini jika Anda mendapatkan kesalahan itu.


0

Ini terjadi ketika saya memperbarui cabang rilis sebelumnya dengan file dari bagasi. Saya menggunakan Windows Explorer untuk menyalin folder dari folder checkout trunk saya, dan menempelkannya ke tampilan Eclipse saya dari folder checkout branch rilis. Sekarang Windows Explorer dikonfigurasikan untuk tidak menampilkan file "tersembunyi" yang dimulai dengan ".", Jadi saya tidak menyadari semua file .svn yang salah disisipkan ke dalam folder checkout cabang rilis saya. Doh!

Solusi saya adalah menghapus proyek Eclipse yang rusak, memeriksanya kembali, dan kemudian menyalin file-file baru dengan lebih hati-hati. Saya juga mengubah Windows untuk menampilkan file "tersembunyi".


0

saya mendapatkan kesalahan ini ketika mencoba mengkomit beberapa file, hanya saja itu adalah file / folder yang tidak ada dalam copy pekerjaan saya. SAYA BENAR-BENAR tidak ingin melalui kerumitan memindahkan file dan memeriksa ulang, pada akhirnya, saya akhirnya mengedit file .svn / entri dan menghapus referensi direktori yang menyinggung.


0

Dalam kasus saya, hanya menghapus versi lokal dan memeriksa ulang salinan baru adalah solusinya.


0

Saya baru saja mendapat kesalahan ini. Apa yang saya sarankan adalah Anda pertama kali memeriksa server Anda jika ada file asli. Terkadang perubahan tidak dilakukan di folder lokal Anda. Jika ini situasi Anda, hapus saja folder Anda dan checkout lagi.


0

Untuk menyelesaikannya, saya perlu mengembalikan file yang bermasalah, dan memperbarui copy pekerjaan saya, dan kemudian saya memodifikasi file lagi dan setelah langkah-langkah ini kesalahan tidak terjadi lagi.


0

Cukup lakukan svn ke baris perintah atau jika Anda berada di windows pilih opsi pembaruan svn.

  • Setelah ini selesai, ini memungkinkan Anda untuk melakukan tindakan lebih lanjut seperti melakukan dan lain-lain.

0

Saya baru saja mendapat ini ketika saya mencoba commitdari sebuah trunkdirektori. Melakukan svn updatedari trunkdirektori tidak menyelesaikan kesalahan; Namun, melakukan svn updatedari direktori induk (tempat .svndirektori berada) memang menyelesaikan kesalahan.

Tebakan saya tentang apa yang terjadi (kasus penggunaan antara lain, mungkin ada beberapa alasan untuk "svn: E160024: sumber daya kedaluwarsa; coba perbarui"): di samping itu trunk, ada branchesdirektori. Saya menarik branches/branch-1ke dalam masterdari GitHub. Melakukan svn updatedari direktori induk (yaitu, root copy pekerjaan saya) bukannya trunktampaknya telah melakukan sesuatu branchesdi samping trunk. Ketika saya mencoba commitlagi, tidak ada kesalahan.

Namun, seperti yang saya katakan di atas, ini adalah satu kasus di antara banyak lainnya.

Catatan: tidak seperti apa yang disarankan seseorang, saya tidak percaya itu ide yang baik untuk bermain secara manual di .svndirektori.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.