Subversion'da engellenen klasörler


131

Subversion'a girmeye çalıştığınızda "engellendi" ne anlama geliyor? Metin durumu "engellendi" olan kırmızı iki klasör görüyorum. Dokümanların hiçbir yerinde bunun ne anlama geldiğini anlamıyorum.

cleanupKomutu denediğimde, "klasör adı bir çalışma dizini değil" mesajı alıyorum. Bu, VS'de yeni oluşturduğum bir klasör ve onu Subversion'a eklemeye çalıştığımda bana bu hatayı veriyor. Diğer tüm klasörler iyidir.


Ekleme işleminde 'Engellendi' mi?
Sander Rijken

Yanıtlar:


113

.svn alt dizinlerini sildiğinizde veya taşıdığınızda (SVN komutlarından geçmeden) oluşur, bu nedenle SVN, çalışan kopyanın bozuk bir görünümüne sahiptir.

Önce bir temizleme deneyin ve bu sorunu çözmezse, alt dizin .svn klasörlerini geri yüklemek için dizini geri döndürün (veya güncelleyin).


1
tuhaf. Bu klasörü kontrol etmek zorunda kaldım. Klasör bilgi havuzunda daha önce vardı. Daha sonra svn delete komutunu kullanmadan sildim. Tekrar kontrol edip taahhüt ederek sorun çözüldü. Sonra yeniden adlandırmadığım, silmediğim ve yalnızca düzenlediğim başka bir .css dosyasında, bir svn güncellemesi yapmak zorunda kaldım çünkü bununla ilgili garip bir sorun alıyordum (farklı mesaj).
PositiveGuy

1
Yüce Tanrım, yerel sürücümdeki çalışan kopyasına değil, harici sürücümde bulunan bu projenin bir kopyasına dayanarak taahhüt vermeye çalışıyordum. Duh.
PositiveGuy

8
Bu genellikle bir dizini bir yerden diğerine taşırsanız ve SVN taşıma komutunu kullanmazsanız olur. Gizli .svn dosyası onunla birlikte taşınır, ancak güncellenmez. .Svn dosyalarının silinmesi sorunu çözer.
user85259

1
Windows Gezgini yerine Visual Studio 2008 kullanarak bir klasörün tamamını başka bir klasöre kopyaladığımda bu durum başıma geldi.
MacGyver

2
Çözdüğüm yol, dosyalarımı engellenen klasörden dışa aktarmaktı, böylece onları kaybetmiyorum, ardından engellenen klasörün üzerindeki klasöre tıkladım, geri döndür düğmesine tıkladım, ardından engellenen klasör dışındaki her şeyin seçimini kaldırdım ve engel olanı geri aldım klasör, böylece bu klasörü .svn dosyasının içeriğinden çıkarır. Sonra daha önce engellenen klasörü dışa aktarılan dosyalarla yeniden ekledim ve yeniden ekledim.
MacGyver

9

Buna neyin sebep olduğunu bilmeden , çözüm, çalışan kopyayı (yerel olarak sahip olduğunuz tüm ödünç alma) başka bir yere aktarmak olabilir.

Tortoisesvn kullanıyorsanız, "sürümsüz dosyaları dışa aktarma" seçeneğine sahip olursunuz, ancak bence bunu komut satırından yaparsanız yalnızca sürümlü dosyaları dışa aktarır, bu nedenle sürümsüz dosyaları manuel olarak kopyalamak için biraz zahmetli bir göreviniz olabilir. .

Tamamlandığında, temiz bir çalışma kopyasını kontrol edin ve ardından sahip olduğunuz dışa aktarılan yedeği üzerine bırakın. Yedeklemede .svn klasörlerinin olmaması çok önemlidir.

Bu hataları daha önce insanlar diğer çalışma kopyalarının içindeki çalışma kopyalarını veya .svn girişlerini bozan herhangi bir şeyi kontrol ettiklerinde görmüştüm.


Bu benim için sorunumu çözdü. Teşekkürler!
Patrick

11
Bence çözüm, çöp kutusuna SVN yapıştırmak ve çöp olmayan bir sürüm kontrol sistemine geçmek. Üzgünüm ... sadece sinirliyim.
Phil Hale

5

Aynı sorunu yaşadım ve şu şekilde düzelttim:

  • engellenen dizini yeniden adlandırdı
  • dir, SVN'deki orijinal adıyla oluşturuldu (örneğin, svn mkdir)
  • üst klasörü güncelledi, böylece yeni oluşturulan dizin çalışma kopyamda görünecek
  • dosyaları engellenenden yeni oluşturulan dizine kopyaladı ve bunları kaydetti

4

Bir * nix sistemindeyseniz, bir dosya oluşturmadığınızdan emin olun, onu SVN'ye ekleyin, ardından silin ve aynı adlı bir klasörle değiştirin. OP'ye yardımcı olmaz, ama umarım bu birisini stresten kurtarır.


1

Bu, bazı nedenlerden dolayı operasyon sırasında bir çatışma meydana geldiği anlamına gelir. Sürümü alınmış bir dosya ile aynı ada sahip, sürümsüz bir dosya veya klasör olup olmadığını kontrol edin.

(Tortoise SVN istemci yardım dosyasından başka kelimelerle anlatılmıştır)


1

Benim için hiçbir şey işe yaramadı, bu yüzden aşağıdakileri yaptım:

  • yeni bir konuma dönüştürülmemiş dosyalarla ihraç edildi
  • mevcut klasörü yeniden adlandırdı
  • klasörü projedeki dışa aktarma konumundan taşıdı
  • yeni klasörü yeniden adlandırdı
  • ekle, kaydet
  • eski, yeniden adlandırılmış klasörü kaldırdı
  • yeni klasörü yeniden adlandırdı
  • işlemek

1

Bu duruma neden olabilecek farklı senaryo çeşitleri vardır. İşte bir örnek:

İle bitirdim! 'svn yeniden adlandır' komutu kullanılmadan www'den www_a'ya yeniden adlandırılan bir dizini işaretleyin:

  1. Orijinal adı taşıyan mevcut dizini yeniden adlandırın, örneğin www_b
  2. Www_a'yı tekrar www olarak yeniden adlandırın
  3. Www dizini içinde 'svn güncellemesi' veya 'svn geri döndürme' yaptığınızdan emin olun
  4. Yukarı güncel www dizinini sil olmadan 'delete svn' kullanarak
  5. Ana dizine gidin ve 'svn güncellemesini' yayınlayın
  6. Bu, orijinal www dizinini geri yükleyecektir
  7. Bu sefer www'yi www_a olarak yeniden adlandırmak için 'svn yeniden adlandır'ı kullanın
  8. Www_b'yi www olarak yeniden adlandırın
  9. Depoya eklemek için 'svn add' kullanın

Bu noktada doğru bir svn çalışma dizini edinmelisiniz. Ve svn dizini karmaşasının nasıl çözüleceğine dair bir veya iki şey öğrenin.


1

Bir Windows makinesinde bu sorunla karşılaştı.

Ait olduğu tüm projeye bakmadan önce dizini kontrol ettim. Benim için 'tıkanmış' soruna neden oldu.

Bu klasörü basitçe sildim ve kökten (o klasörün) bir güncellemesini çalıştırdım. İyi çalıştı.

Temizleme vb. Komutlar benim için işe yaramadı.

Bazı uyarılar:

  1. Klasör büyükse bu maliyetlidir.
  2. Varsa tüm değişikliklerinizi kaybetmenize neden olur.

Herşey gönlünce olsun.


1

Bunu bir depo dizinine sembolik bir bağlantı oluşturduğumda da Windows'ta görmüştüm; bu durumda, havuz kökü "engellenmiş" olarak görülür. Yine de bunun herhangi bir etkisi yok gibi görünüyor.

Yeniden üretme adımları:

  1. Deponuzu kontrol edin

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
    
  2. Dizininizin iyi olup olmadığını kontrol edin

    cd plugin_dir
    svn st -u
    

    Çıktı olmalıdır

    Status against revision: 1234
    
  3. Sembolik bağ oluşturun (sorunu gösterir)

    cd ..
    mklink /d link_dir plugin_dir
    cd link_dir
    svn st -u
    

    Çıktı olacak

    ~           1234  .
    Status against revision: 1234
    

0

FTP istemcimi kullanarak alt dizinleri olan bir klasöre çalışma kopyama yapıştırırken bu problemle karşılaştım - transfer düğmesine basar basmaz batırdığımı biliyordum ... çok geç çalışmanın tehlikeleri.

Yukarıdaki ve çevrimiçi bulunan diğer tüm önerileri boşuna denedim. Her seçenek, dizinimin kilitlendiği ve işlemin gerçekleştirilemediği hatasına neden oldu.

Time Machine kopyama girdim, dizini geri yükledim ve gitmem iyi oldu. Önlem olarak çalışan kopyayı temizledim, dosyalarımı düzgün bir şekilde güncelledim ve tekrar iş başındaydım.


0

Sık sık hareket halindeyken aynı anda birden fazla şubemiz var, beni IIS yapılandırmasıyla değiştirmekten veya karıştırmaktan kurtarmak için her şubeyi ayrı bir klasöre kontrol ediyorum. Daha sonra bu klasörleri IIS'de yapılandırılan ana yola geri bağlamak için dizin bağlantısını kullanıyorum.

Bu yüzden benim için bağlantılı dizinde her zaman sarı bir ünlem işareti vardır ve engellendi olarak işaretlenir. Bunun teknik olarak SVN dışında yaratılmış / taşınmış olmasından kaynaklandığına inanıyorum.


0

Web arayüzü aracılığıyla bir CMS (WordPress veya Drupal) için güncellemeler yaptığımda dizinlerde bu "engellenmiş" durumunu alıyorum - uygulama kodunun aslında bir alt sürüm çalışan kopya olduğunun farkında değil, bu nedenle bir eklentiyi güncellerken bu eklentiyi kaldırıyor dizin (dizin dahil .svn) ve eklentinin yeni sürümünden yeni bir dizine düşer.

Bu .svndizini, engellenen dizini içeren dizinden geri almak için . İle bir kontrol yapıyorum --force. Örneğin, plugin_dir"~" işaretliyse, üst dizininden çalıştırırım:

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir

Halihazırda var olan dosyalar yalnız bırakılır ve kullanıma alma komutunun çıktısında "E" olarak işaretlenir (çalıştırdığımda "M" olarak işaretlenir svn status).

Bazen geri dönüp güncellemeyle yeni olan dosyaları eklemem gerekiyor; veya ben ödeme yaptığımda yeniden göründüklerinden güncellemenin bir parçası olarak silinmesi gereken dosyaları silebilirsiniz. Bunların kasada "A" olarak işaretlendiğine inanıyorum, ancak daha sonra svn statusbunlardan bahsetmeyecek.


0

Buna bazı dosyaların kırmızı ünlem işaretiyle işaretlendiği Eclipse'de rastladım. Sorun, kaynak dizindeki başıboş bir .svn klasörüydü. .Svn klasörünü sildim, tutulmayı yeniledim ve dosyaları teslim ettim.


yup klasörümü silmem gerekiyordu, bozuktu ... .svn klasörü.
PositiveGuy

0

Bu, subversion'ınızı XCode'un desteklemediği bir sürüme yükselttiğinizde de olabilir.


0

Bunu çözmek için bulduğum en basit (ve en güvenli) yol:

  1. Engellenen sorun teşkil eden dosya veya dizini (veya bir ana dizini) geçici olarak yeniden adlandırın (örneğin, ".backup" ekleyin).
  2. Yeniden .svnadlandırılmış dizin (varsa) içindeki tüm dizinleri silin .
  3. svn revert 1. adımdaki (ve artık eksik olan) nesne.
  4. svn delete geri döndürülen nesne.
  5. Yedeklemeyi 1. adımdan orijinal adına yeniden adlandırın.
  6. Yeniden adlandırılmış nesneyi yeni bir nesne olarak svn'ye ekleyin ve iade edin.

0

Bu, bir dosyayı aynı ada sahip bir klasörle değiştirdiğimde başıma geldi. Eski dosyayı silerek çözüldü, kaydedin ve ardından yenisini ekleyin. Biraz huysuz ama benim için çalıştı :)


0

Engellenen dizinlerden .svn dosyasını sildim ve dışarıdan güncelledim. Sonra svn komutu dışında bu dosyaları tanıyacaktır.

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.