Subversion durum sembolü “~” ne anlama geliyor?


110

Yaptığımda tilde sembolü alıyorum svn status.

İşte XCode'da düzenledikten sonra projenin çıktısı.

svn status
M      build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree
M      build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header
M      build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols
~      build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings
M      main.m
//more changed files

Bunun ne anlama geldiğine dair bir fikriniz var mı? Google'da veya herhangi bir svn hile sayfasında bulamıyorum.

İlginç bir şekilde, yalnızca main.m'yi düzenledim, ancak çok sayıda değiştirilmiş dosya var. Dunno neden böyle olurdu. SVN ve XCode ile çalışmak için herhangi bir ipucu olan var mı? Yalnızca kaynak dosyalarımı sürüm kontrolü altına mı koymalıyım?

Düzenleme: - zaten sürüm kontrolü altında olan bir dosyanın başka türden bir dosyayla değiştirilmesinden kaynaklanır. Bu durumda, strings.pbxstrings bir dosyaydı ve şimdi bir dizin haline geldi. Hikayenin ahlaki, derleme klasörünüzü sürüm kontrolüne sokmayın.


Hmm, sadece yeniden eklemek yerine "düzeltmenin" bir yolu olup olmadığından emin değilim. Bu durumu çözmenin iyi bir yolu olup olmadığını soran başka bir soru göndermek isteyebilirsiniz, daha fazla dikkat çekersiniz (mevcut soru zaten cevaplanmış olduğundan).
Chad Birch

Yanıtlar:


88

SVN Kitap diyor ki:

Öğe, bir tür nesne (dosya, dizin, bağlantı) olarak sürümlendirildi, ancak farklı türde bir nesne ile değiştirildi.

Belki de aslında tek bir dosyaydı, ama onu bir dizine veya bu satırlar boyunca bir şeye dönüştürdünüz?


1
Görünüşe göre haklısın. Artık .svn dosyası olmayan bir dizindir. Bunu nasıl düzelteceğine dair bir fikrin var mı? Subversion'dan silip yeniden eklemem gerekir mi?
jergason

Bunu düzeltmenin bir yolunu bulma şansın var mı?
Phill Pafford

48
En iyi çözüm, yeni nesneyi (sizin durumunuzda, dizini) yeniden adlandırmaktır; "svn" depodan çakışmaya neden olan nesneyi kaldır "(muhtemelen sildiğiniz bir dosya), Commit, sonra yeni nesneyi yeniden adlandırın ve arşive" svn ekle ". Tekrar taahhüt edin. Sırasıyla eski nesnenin var olduğu, kaldırıldığı ve yeni nesnenin eklendiği 3 revizyon dizisine sahip olacaksınız.
Brian Lacy

8
Bu konuyu okuyan birinin de aynı problemi olması durumunda: bu benim başıma geldi ve '~' durumunun nedeni, depoda standart dosyalar tarafından üzerine 'sed -i' işlemiyle yazılmış bazı sembolik bağlantıların bulunmasıydı. . Sembolik bağları yeniden yarattım ve '~' gitti.
jb

5
@JamieBullock Bugün aynı sebepten dolayı bana da aynı şey oldu. Sorunun ne olduğunu bilmeden önce bu komutu denedim: svn status | grep ^~ | grep -o [^[:space:]]\*\$ | xargs svn reverttüm sembolik bağları geri yükleyebildi.
Paul

34

İşte yaptığım şey:

Klasör Test ise

  1. mv Test Testi1
  2. svn testi kaldır
  3. mv Test1 Testi

5
Bu, kaldırma ve ekleme arasında kaldığım sürece benim için çalıştı. 1. mv Test Test1 2. svn kaldır Test 3. svn commit -m "Kaldırıldı Test" 4. mv Test1 Test 5. svn add Test 6. svn commit -m "Eklendi Test"
Brandon Brodjeski

1
@Sancelot'un cevabı çok daha iyi; kullanıyorsanız yeniden adlandırmanıza gerek yoktur svn delete --keep-local fileName.
DawnSong

15

itibaren

svn help status

Farklı türden bazı öğeler tarafından engellenen '~' sürümü belirlenmiş öğe

Bunu sadece dosya izinlerinin değiştiği ve svn'nin yürütme erişiminin olmadığı yerde gördüm.

Bu yardımcı olur umarım.


12

Bunu düzeltmenin en kolay yolu, yedeklemek, ardından bu duruma sahip klasörü veya dosyayı silmek ve ardından "svn up" yapmaktır: bu, bir dosya tarafından yeniden yerleştirilmiş bir klasör değildir, sadece .svn klasörü eksik veya bozuk olabilir .


11
svn delete --keep-local x
svn commit -m "del x"
svn add x
svn commit -m "blah"

Yeniden adlandırmaya gerek yok. En iyi cevabı verdin.
DawnSong

En iyi cevap! Bu sorunu düzeltir. Benim durumumda, normal bir dosya olarak kaydedilmiş bir yumuşak bağlantıydı.

10

Bu, bir klasördeki .svn klasörünü kaldırdığınızda (örneğin, bir dizini kaldırıp aynı dizini yeniden oluşturduğunuzda) veya bir dizini sembolik bir bağlantıyla veya aynı adlı bir dosyayı değiştirdiğinizde meydana gelebilir. .

Bunun a-klasör adında bir klasör olduğunu varsayarsak, ana klasörde aşağıdaki komutları vererek bunu düzeltebilirsiniz:

$ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf
$ svn up --force .
svn: Directory 'logs/.svn' containing working copy admin area is missing
$ svn up --force .
E    a-folder
...
Updated to revision n.

Ve sonra svn ekleme / kaldırma ve değişiklikleri yeniden işleme alma meselesi


3

Benzer bir sorun vardı, SVN bir kilitten şikayet ediyordu. İşte yaptığımız şey:

  • Dosyaları yedekledim
  • Rm -r (linux) ile söz konusu dizin kaldırıldı
  • Dizinde svn temizleme çalıştırıldı
  • Ran force svn up dizinde

3

Sadece bunun Joomla'da uzantıları yüklerken sık karşılaşılan bir sorun olduğunu paylaşmak istiyorum. Uzantılar CMS aracılığıyla yüklenir ve grup yazma olmadan apache'ye aittir. Genellikle bir sonraki adım, dosyaları SVN'ye eklemektir, ancak dosya izinlerini sudo yapmazsanız veya değiştirmezseniz, SVN .svn dizinini yazamadığında başarısız olur. İşte kolay çözüm.

mv foo foo-bak
svn up foo
svn revert foo

# just for good measure. Foo should not show up in the two following commands.
ls | grep foo
svn st | grep foo

mv foo-bak foo
svn add foo

2

Windows altındaki sembolik bağlantılar da olabilir. SVN'ye sembolik bağlantı uyguladığınızda ve ardından Windows altında kontrol ettiğinizde, bağlantılar normal dosyalara dönüştürülür ve bu da ~ olarak rapor edilir.


1
Peki bunu nasıl düzeltirsiniz?

2

Joomla !, Wordpress veya Drupal altındaki modülleri yükseltirken sık sık bunu yaşadım. Bazen .svn dizini yükseltme işlemi tarafından kaldırılır.

# rename updated directory
mv foo foo.new

# restore the old directory
svn up foo

# merge / update the old directory with new items
# notice that the above command will preserve the obsolete files
# so you should do a diff -r in order to remove them
cp -r foo.new/* foo

# Add files commit, etc
svn add foo/*
svn delete foo/xx
svn commit -m "updated module"

0
~ versioned item obstructed by some item of a different kind
    Second column: Modifications of a file's or directory's properties
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.