Svn 'güncel değil' hatasını nasıl aşarsınız?


337

Subversion'da bir dizin yapısını bir konumdan diğerine taşımaya çalışıyordum, ancak bir Item '*' is out of datetaahhüt hatası alıyorum.

En son sürümü kontrol ettim (anlayabildiğim kadarıyla). svn st -umv komutları dışında hiçbir fark ortaya çıkmaz.


11
svn'i denedin mi
Sklivvz

3
önemsiz bir sorun önleyici: Bir klasörü ve içeriği siliyorsanız, önce yalnızca içeriği silin, svn, ardından klasörü silin, sonra tekrar svn.
Fattie

Yanıtlar:


637

Bazen pencerelerde TortoiseSVN ile anlıyorum. Benim için çözüm svn update, indirilecek veya güncellenecek hiçbir revizyon olmamasına rağmen dizine. Meta verilere sihirli bir şekilde sabitleyen bir şey yapar.


4
Bir klasörün svn: ignore özelliğini değiştirdim ve güncel olmayan bir hata almaya başladım. Ama dediğin gibi, sadece güncelleme işe yaradı.
Sushant

4
Bu dizini güncellemeye çalıştığımda "svn: Hedefsiz iki üst düzey rapor" alıyorum SVN'den nefret etmek için bir neden daha. Git ile hiç bir dizin taşıma gibi temel işlemleri ile bu tür aptal bir sorun yoktu.
Dan Dascalescu

Sürümler GUI'sini kullanarak üst klasörümde 'güncel değil' hatası oluştu. Ana klasörü güncelledim ve hatasız çalıştım.
milesmeow

1
bunun nedeni svn: ignore for me ve svn güncellemelerinin değiştirilmesinden kaynaklandı. Teşekkürler!
Nathan Schwermann

8
Alt Klipte "Ekip -> HEAD'e Güncelle" seçeneğini kullanın. Benimle iyi çalışıyor.
NeoRamza

42

Tüm bariz şeyleri ve buradaki diğer önerileri denedikten sonra, hiçbir şans olmadan, bir Google araması bu bağlantıya yol açtı (bağlantı artık çalışmıyor) - Subversion diyor ki: Dosyanız veya dizininiz güncel değil

Özetle, hile .svn dizinine (rahatsız edici dosyayı içeren dizinde) gidip "all-wcprops" dosyasını silmektir .

Başka hiçbir şey yapmadığında benim için çalıştı.


Başardı! Teşekkürler! Bunun nasıl olduğu ve en başta nasıl önleneceği konusunda herhangi bir önerisi olan var mı?
Jesse Barnum

Benim için çalıştı. Tüm 'all-wcprops' dosyalarını kaldırmak zorunda kaldım: bul. -adi all-wcprops -exec rm -rf {} \;
Peter Hough

Sanırım bunu yapıdaki dosyaları silmeden svn araçları ve seçenekleri ile çözebilmelisiniz
August

+1, bu benim için işe yarayan tek şey. Diğer çözüm olmadı.
Clayton Dukes

9
aint benim için çalışıyor all-wcprops, .svdizinde dosya yok
ulkas

39

Bu sorunun .svn dosyasından geldiğine inanıyorum. Eski ebeveyn, yeni ebeveyn veya eski ebeveynte yanlış. Başlangıç ​​noktanıza geri dönmeyi denerdim. Klasörün temiz bir kopyasını almak için dışa aktarma kullanın. Temiz kopyayı yeni konuma taşıyın ve taşıma işlemini yapmak için bir ekleme ve silme kullanın. Bu, SVN'nin yaptığı şeyi elle yapar, ancak işe yarayabilir.


4
Subversion aslında kopyalayıp siler, bu da oradaki silme ve buraya ekleme işleminden oldukça farklıdır.
Yılan

37

Bunun benim için çalıştığını gördüm:

svn update
svn resolved <dir>
svn commit

Daha svn updateönce yapmadan benim için çalıştım, güncellemeden kaçınmak istediğim bir senaryom vardı. (bu yüzden sadece
çözdüm

bu durumumun çaresi oldu, başka hiçbir şey işe yaramadı. Teşekkürler!
texasdave

14

Yerel kopyayı güncellemeye ve söz konusu öğeyi geri almaya çalıştı ve yine de 'güncel değil' hatası aldı. Bu bir nedenle işe yaradı:

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

11

Sadece birkaç klasörde aynı sorunu vardı ve bu taahhüt etmek için yaptım:

1) "Takım Senkronize Et" perspektifinde, klasörü sağ tıklayın> Geçersiz kıl ve Güncelle
2) Klasörü tekrar sil
3) Tamamla ve mutlu ol


5

Teşekkür ederim. Bu benim için çözdü. svn update - kuvvet / dosya adı yolu /

Yerel dizindeki son dosyanız aynıysa, bilgi istemi yoktur. Dosya farklıysa, tf, mf vb. İster ... mf (mayın dolu) seçilmesi hiçbir şeyin üzerine yazılmamasını sağlar ve bittiğinde çalışabilirim.

Jay CompuMatter


5

Bir güncelleme düğmesine basarak çözmeyi başardım


4

@ Alexander-Klyubin'in önerdiği gibi, depodaki hamleyi yapın. Ayrıca, özellikle taşınacak büyük miktarda veri varsa, çok daha hızlı olacaktır, çünkü tüm bu verileri tekrar ağ üzerinden aktarmak zorunda kalmayacaksınız.

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

iyi çalışmalı


Bir svn up; svn mvkomut serisi ile bu sorunu yaşıyordum ve bu hile güzel yaptı. Teşekkür ederim.
DopeGhoti

3

Dosyanızı veya yolunuzu kullanarak komutu çalıştırmadan önce değişikliklerinizi yapın

sudo rm -r /path/to/dir/

sonra:

svn up and commit or delete 

2

Daha düşük bir revizyon değil, başı kontrol ettiğinizden emin misiniz? Ayrıca, en son sürüme sahip olduğunuzdan emin olmak için bir güncelleme yaptınız mı?

Bununla ilgili bir tartışma var http://svn.haxx.se/users/archive-2007-01/0170.shtml .


Eski bir kopyayı kontrol etmek istediğinizi varsayalım? O zaman iade işlemini yapmanın en kolay yolu nedir?
OJW

Eski bir kopyaya dönmekten bahsediyorsanız, her zamanki gibi kontrol edin. Yeni bir revizyon numarası alacak.
jgreep


2

"Güncel değil" hatasının en az bir nedeni daha var. Benim durumumda sorun "svn propset svn: ignore -F .gitignore" çalıştırılarak oluşturulan .svn / dir-props. ilk kez. .Svn / dir-props silinmesi kötü bir fikir gibi görünür ve başka hatalara neden olabilir, bu nedenle hatalı "svn propset" i temizlemek için "svn propdel" kullanmak en iyisi olabilir.

# 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

Eğer github svn köprüsünü kullanıyorsanız, muhtemelen github'ın tarafında bir şey değişti. Çözüm basit, çalıştırmanız gerekiyor svn switch, bu da kendisini düzgün bulmasını, ardından güncellemesini ve her şeyin çalışmasını sağlıyor. Kasanızın kökünden aşağıdakileri çalıştırın

svn info | grep Relative 
svn switch path_from_previous_command
svn update

veya

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

Bu çözümün temeli Lee Preimesberger'in blogundan geliyor


1

Kullanarak mı taşıyorsunuz svn mvyoksa sadece mv? Bence sadece mvbu soruna neden olabilir.


1

Güvenli tutmak için dir yerel makineme taşındı, sonra svn aptal dizini sildi, sonra taahhüt. Klasörü yerel makinemden eklemeye çalıştığımda STILL hatayı attı (klasörü yeniden adlandırmaya çalıştığımda SVN taşıma işlemi aynı şeyi yaptı). Bu yüzden geri döndüm, sonra bir mkdir DIRNAME yaptım, ekledim ve taahhüt ettim. Sonra içeriği ekledim ve taahhüt ettim ve işe yaradı.


1
Sadece yerel ödeme bir şekilde bozuk olduğundan, depo içeriğini (svn delete) değiştirmekten kaçınırım.
Lars Noschinski

1

Her biri bazı dosyalar içeren birkaç dizin sildikten sonra rastgele bu hatayı aldım. Dizinleri Netbeans üzerinden sildim ve gerçekten silmediğini fark ettim. Sadece dizinlerin içindeki her şeyi silmiş gibi görünüyordu ve Netbeans içindeki dizine referans kaldırıldı. Yine de dosya sisteminde mevcutlardı. Dosya sisteminden silindiğinden emin olun ve taahhüdü tekrar deneyin.


1

Bir kez benzer bir sorunu basitçe yeni bir çalışma kopyasını kontrol ederek ve .svn dizinini değiştirerek bu yeni teslim edilen hata ile ilgili hataları atarak çözdüyseniz. Benim durumumun nedeni, bir havuz bozulması ve bir yedeklemeden geri yükleme işleminden sonra, çalışma kopyasının geri yüklenen depoda bulunmayan bir revizyona işaret ediyor olmasıydı. Ayrıca "öğe güncel değil" hataları var. İşleme başlamadan önce çalışan kopyanın güncellenmesi bunu çözmedi, ancak yukarıda açıklanan .svn'yi değiştirdi.


1

Bunu yaptım ve benim için çalıştı:
1. Dosyanızın bir yedeğini alın. Kodunuzu bir metin dosyasına kopyalayabilirsiniz.
2. Taahhüt etmek istediğiniz dosyayı sağ tıklayın >> Takım >> Geçmişi Göster. 3. "Geçmişi Göster" Panelinde bu dosyanın tüm düzeltmelerini göreceksiniz. Dosyanın en son revizyonuna sağ tıklayın >> Revizyon Alın: Yerel değişikliklerinizi geçersiz kılar.
4. Şimdi kodunuzu yedekleme dosyasıyla en son dosyayla birleştirin (adım # 1).
5. Yeni birleştirilen dosyayı senkronize edin ve tamamlayın.


1

Sunucunuzu ve istemcinizi Subversion 1.9'a yükseltin.

Eğer out of daterasgele hata oluşur size taahhüt çalıştırdığınızda normalde, bu bir eski ve desteklenmeyen Subversion 1.7 veya daha eski istemci veya sunucu kullanıyor gösterebilir gerektiği halde.

Sorunu çözmek için sunucuyu ve istemcileri yükseltmelisiniz. İlgili Subversion 1.9 Sürüm Notları girişine bakın: HTTPv1 üzerinden işlem yaparken "Eski" hataları .


1
Bu bile Windows'ta TortoiseSVN 1.8.8 ile oldu. 1.9 sürümüne güncelleme yapılması yardımcı oldu.
Martin Pecka

1

Hata, belirli bir dosyayı güncellememiş olmanızdır, önce güncelleyin, sonra dosyayı yalnızca siz çalıştırabilirsiniz.


1

Doğrudan .svn değişiklik dışında hepsini denedim. Hiçbir şey yardımcı olmadı, işte benim çözümüm.

Eclipse> Pencere> Görünümü Göster> Geçmiş'te , birden fazla svn "Geçersiz Kıl ve Güncelle" / "Geri döndür" / dosyayı ve kasayı silmeme rağmen dosyanın en yeni Revizyon'da olmadığını gördüm.

Bu yüzden Paket Gezgini'ne gittim> Dosyaya sağ tıklayın> Şununla değiştir> Depodan En Son .

Geçmiş Görünümü'ndeki bir başka görünüm, dosyanın artık en son Revizyonda olduğunu gösterdi.


1

"Clean Up" Bu yolda olacak.

Svn klasörünü sağ tıklayın ve 'Temizle'yi tıklayın, bu hatayı alırsanız bunu yapın.


0

Bu, daha önceki bir sürümün dalını bagajdaki dosyalarla güncellediğimde oldu. Trunk checkout klasörümdeki klasörleri kopyalamak için Windows Gezgini'ni kullandım ve serbest bırakma dalı ödeme klasörünün Eclipse görünümüme yapıştırdım. Şimdi Windows Gezgini "." İle başlayan "gizli" dosyaları göstermeyecek şekilde yapılandırıldı, bu yüzden sürüm dalı çıkış klasörüne yapıştırılan tüm yanlış .svn dosyalarından habersizdim. Doh!

Benim çözümüm hasarlı Eclipse projesini havaya uçurmak, tekrar kontrol etmek ve daha sonra yeni dosyaları daha dikkatli bir şekilde kopyalamaktı. Windows'u "gizli" dosyaları gösterecek şekilde de değiştirdim.


0

bazı dosyaları işlemeye çalışırken bu hatayı aldım, sadece benim çalışma kopyasında mevcut olmayan bir dosya / klasör oldu. GERÇEKTEN dosyaları taşıma ve yeniden kontrol güçlük gitmek istemiyordu, sonunda, ben .svn / girişleri dosyasını düzenleme sona erdi ve rahatsız edici dizin başvurusu kaldırıldı.


0

Benim durumumda sadece yerel sürümün silinmesi ve yeni kopyanın yeniden kontrol edilmesi bir çözümdü.


0

Bu hatayı aldım. Önerdiğim, önce orijinal dosyanın orada olup olmadığını kontrol etmenizdir. Bazen değişiklikler yerel klasörünüzde yapılmaz. Durumunuz buysa, klasörünüzü silin ve tekrar ödeme yapın.


0

Çözmek için, dosyayı sorunlu olarak geri döndürmem ve çalışma kopyamı güncellemem gerekiyordu ve daha sonra dosyayı tekrar değiştirdim ve bu adımlardan sonra hata artık olmadı.


0

Sadece komut satırına svn yapın veya pencerelerdeyseniz svn güncelleme seçeneğini seçin.

  • Bu yapıldıktan sonra, taahhüt ve diğerleri gibi daha fazla işlem yapmanıza izin verir.

0

Deniyordum ise sadece bu var commitbir gelen trunkdizine. Yapma svn updategelen trunkdizinde hata çözmedi; ancak, svn updateüst dizinden ( .svndizinin ait olduğu yer) yapmak hatayı çözdü.

Ne olduğuna dair tahminim (diğerleri arasında bir kullanım örneği, bu “svn: E160024: kaynak güncel değil; güncellemeyi deneyin” için birden fazla neden olabilir): boyunca trunk, bir branchesdizin vardı. Ben çekti branches/branch-1INTO masterGitHub. Bunun svn updateyerine üst dizinden (yani, çalışma kopyamın kökü) trunkyapmak da branchesek bir şey yapmış gibi görünüyor trunk. commitTekrar denediğimde hata yoktu.

Bununla birlikte, yukarıda söylediğim gibi, bu muhtemelen diğer birçok durum arasında bir durumdur.

Yan not: Birinin önerdiğinden farklı olarak, .svndizinde manuel olarak oynamanın iyi bir fikir olduğuna inanmıyorum .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.