SVN'de "çalışan kopya yönetici alanını içeren eksik" nasıl düzeltilir?


184

Depomda çevrimdışı eklediğim bir dizini el ile sildim. Dizini geri yükleyemiyorum.

Güncelleme veya taahhütte bulunma girişimleri aşağıdakilerle başarısız olur:

"blabla/.svn" containing working copy admin area is missing.

Nedenini anlıyorum, ama bunu düzeltmek için yine de var.

Tüm depoyu kontrol etmek ve değişikliklerimi manuel olarak eklemek istemiyorum, saatler sürecek.

Yanıtlar:


148

Buna göre: http://www.devcha.com/2008/03/svn-directory-svn-containing-working.html

"Blabla" klasörünü farklı bir konuma teslim alın ve .svn klasörünü orijinal "blabla" ya geri kopyalayın.


62
Çok fazla SVN var. .svnHer yerde çöplük alt dizinleri sürüm kontrol geçmişi en kötü fikir olmalıydı.
Johannes Fahrenkrug

9
Millet, Rob tarafından aşağıdaki önerilere göz atın, mevcut çözümden çok daha kolay.
Mohammad Arif

Mohammed, dikkatleri için teşekkürler. Bu benim için çalıştı. Bir günlük dizini yoksaymak SVN almaya çalışıyordu ve .svn silmek beni bu soruna getirdi. Rob'un çözümü çözdü.
Asmor

Johannes, ben de SVN'nin savunucusu değilim.
Joseph Persie

@MohammadArif, Şu anda iki "Soygun" var
Charles Clayton

123

fwiw, benzer bir durum yaşadım ve svn --force delete __dir__ kullandım . Bu benim için sorunu çözdü. Sonra normal olarak çalışma kopyamla çalışmaya devam ettim.


2
Bu benim için de işe yaradı. Dizin asla depoda olmadığı için güncellemeler ve temizleme başarısız oldu, ancak çalışan kopya, revizyon kontrolü altında olduğundan emin oldu. Dizini ekleyip eklemediğimi merak ettim, ancak daha önce işlemden önce sildim mi?
Magnus

1
Bu çok iyi. Bir dizin ekledim, .svn dosyasını sildim ama asla taahhütte bulunmadım. Bu tamamen hile yaptı
Eric

8
Teşekkür ederim; bu cevap bana çok zaman kazandırdı. svn cleanupsonra svn --force delete <directory-that-doesn't-exist-but-should>benim için çalıştı.
mpontillo

İkinci denemede çalıştım, ilk önce --force olmadan denedim, bir şekilde el ile kaldırmak zorunda olduğum ebeveynin .svn'sinde bir kilit dosyası bıraktı. --Force ile ikinci kez sorunu düzelttim.
Jörn Horstmann

3
Hm, bu komut bana aynı "çalışan kopya" hatasını veriyor.
Oscar

72

Bunu düzeltmek için yaptığım şey, söz konusu klasörün yerel kopyasını silmek ve daha sonra svn updatedoğrudan üst öğeden birini yapmaktı .

Düzeltildi.


3
İnanamıyorum ... Her şeyi denedim ... ve bu kadar kolaydı !!! Mükemmel çalıştı, çok teşekkürler !!!!!
lucaferrario

Bu en doğru cevaptır.
joaerl

35

Üst dizinin yeni bir kopyasını kontrol etmeyi deneyebilir misiniz?

Düzenleme: Biraz daha spesifik olmak gerekirse, bir düzey yukarı çıkıp içeren dizini silmeyi öneririm. Sonra bir

svn update --set-depth infinity

dizini değiştirin.


Bunu denedim ama garip bir nedenden dolayı boş bir dizin ile sonuçlanıyorum. Anlamadım ...
e-satis

Üst öğeden açık bir <code> svn güncelleme blabla </code> da çalışmalıdır.
jmanning2k

@ jmanning2k, ben de öyle düşündüm, ama OP denediğini ve işe yaramadığını söyledi.
Rob Wells

Açıklığa kavuşturmak için, --set-depth infinitybu nedenle
önerdim

1
Bu çok daha fazla upvotes gerektirir ... hızlı ve nispeten (svn standartları için) temiz çözüm.
Dino

6

Svn'ye bir dizin ekledim, sonra yanlışlıkla .svn klasörünü sildim.

kullandım

svn delete --keep-local folderName

sorunumu düzeltmek için.


IDE'm bir dizin eklediğinde bu benim için çalıştı ve daha sonra aynı adı taşıyan bir dizini yürütülmeden önce yerine taşıdım.
2013'te

bunu denedi, ama hala yapamadım. Kullandığım svn checkout --force [url].svn klasörü yeniden hangi
Lex

4

Sadece 'svn revert / blabla' yaptım ve işe yaradı, klasör geri döndü ve svn silebilirim


Teşekkürler. Bu sorunu yaşadım ve önerinizi denedim ve işe yaradı.
Boric

3

"Dizin 'blah / .svn' içeren çalışma kopya yönetim alanı eksik" hatası dizini depoya eklemeye çalıştım, ancak bunu yapmak için yeterli dosya sistemi ayrıcalıkları yoktu. Dizin zaten depoda değildi, ancak başarısız ekleme işleminden sonra sürüm denetimi altında olduğunu iddia ediyordu.

Üst dizinin bir kopyasını başka bir konuma teslim etmek ve çalışan kopyanın üst dizinindeki .svn klasörünü değiştirmek, yeni dizini başarılı bir şekilde eklememe ve yürütmeme izin verdi (elbette dosya izinlerini düzelttikten sonra).


2

Biz maven ve svn kullanıyoruz. Bu hataya neden olan hedef dizinin SVN'ye yanlışlıkla iade edilmesiydi. Bu ipucu herkese yardımcı olursa, her şeyi düzeltti.


Tam olarak ne / nereden kaldırılıyor?
DerMike

maven, "target" dizinini oluştururken oluşturur. Genellikle hiç kimsenin bunu kontrol etmesi gerekmez. Bir yetkili check-in, bir dahaki sefere çıkışta bu hatayı oluşturan bir izin sorunu yaptı. "Hedef" dizininin SVN'den kaldırılması sorunu çözdü.
Madu

2

Ben svn rm --force /path/to/dirboşuna çalıştı ama sadece çalışan sona erdi svn upve benim için sabit.


1

Son zamanlarda, dosyalar SVN globallerimdeki ayarlar tarafından hariç tutulduğunda bu hatayı aldım. Dosyaları özellikle depodan da sildiğim için hata özellikle kötü oldu - ve bu, yukarıdaki çözümlerin reddedildiği anlamına gelmiyordu. Bu durumda, .svn dizinini SVN'den kaldırdığım dizinden el ile silmek, bir güncelleştirme çalıştırmama izin verdi ve sonra da işlememe izin verdi.


1

"C: \ superfolder" anahtarını değiştirmeye çalışırken aynı sorunu yaşadım

Hata mesajları:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

Bir "temizleme" yapmaya çalıştıktan sonra, aşağıdaki hatayı aldım:

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

Çözüm:

  1. "Alt klasör" klasörünü silin
  2. "Süper klasör" klasörünü temizleme
  3. "Süper klasör" klasörünü tekrar değiştirmeyi deneyin

bu benim için çalıştı. Sizin için de işe yarayıp yaramadığını lütfen bize bildirin.


1

Geçenlerde bu hatayı aldım. Bunun nedeni, dizinde bu hatayı veren birkaç dosyaya sahip olmasıydı.

İzinleri değiştirdikten sonra her şey beklendiği gibi çalıştı.


1

Gönderilerinizden fazla anlamadım. Benim çözümüm

  1. Sorunlu klasörü kesin ve bir yere kopyalayın.
  2. Subversion'dan başka bir çalışma dizinine (sadece yeni bir dizine) Çözüm Al.
  3. Kayıtlı klasörünüzü yeni çalışan kopyaya ekleyin ve Mevcut Proje Olarak ekleyin (benim durumumda olduğu gibi proje ise).
  4. Teslim Et;

1

Bu sorunu yaşadım. Sadece blabla'yı geçici olarak başka bir yere taşıyın, svn'ye geri döndürmesini söyleyin ve sonra geri taşıyın. Yeni bir katkı olarak kabul edilir. Basit!


1

Bana yardımcı olan en basit:

rm -rf _dir_in_question_
svn up

Sorunlu yönünüzde değişiklik varsa, bu sizin için iyi bir çözüm değildir.


1

Bir üçüncü taraf API kitaplığını daha yeni bir sürümle değiştirirken bu sorunla karşılaştım ve SVN sürümünü yerel sürümle değiştirmek istediğim için buradaki çözümlerin hiçbiri gerçekten işe yaramadı. Benim çözümüm şöyleydi:

1) Sorunlu klasörü ev dizinime taşı, SVN'den sil ve kaydet:

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2) Klasörü geri koyun, SVN'ye ekleyin ve tekrar kesin:

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

İki kat işlemek için biraz rahatsız edici, ama iyi çalıştı gibi görünüyor.


Genellikle kod üzerinde repo çalışma kopyasından ayrı olarak çalışmak istiyorum (IDE'ler, derleyiciler, hata ayrıştırıcılar vb .svn sevmiyorum ve Eclipse afaik 'EVERYONE IGNORE .SVNs SVN hariç!' Komutu yok); Bu benim için temel SVN taahhüt sürecinin olduğu anlamına gelir: 1. repo çalışma kopyası çalışma 2. projenin kök dizinini silmek 3. için bir güncelleme var 3. güncellenmiş proje dizini çalışma kopyasını projenin üst dizinine kopyalayın ve yapıştırın 4. svn add --force <projname> 5. tamamlama. Bu genellikle işe yarar, ancak bazen OP'nin hatasını atabilir. Jamie Brown'ın düzeltmesi
davamda

0

Herkesin başka bir çözüm istemesi durumunda:

  1. Yeni klasörünüzü "foldername2" olarak kontrol edin
  2. Tortise SVN repo tarayıcısına gidin
  3. "Foldername2" öğesini "foldername" olarak yeniden adlandırın
  4. Windows Gezgini'nde bir güncelleme yapın

Umarım birine yardımcı olur.

-Ev


yalnızca Windows çözümü.
Raptor

0

Benim için de aynı sorun her ikisinde de oldu:

  • silindi (--forcebir .map dosyası )
  • svn:ignoreyoluyla * .map eklendisvn propedit svn:ignore .

Benim çözümüm şuydu:

  1. mülkteki değişiklikleri geri al
  2. dosyalarda değişiklik yapma
  3. deponun yeni bir kopyasını al (ne yazık ki!)
  4. mülkü değiştirin ve taahhüt edin

0

Svn için bir dizin eklemeye çalışırken bu sorun vardı. Repo tarayıcısına girerek çözdüm. Sol pencereye sağ tıklayın, klasör ekle'yi seçin ve dizini doğrudan repo tarayıcısına ekleyin.

Daha sonra yerel olarak dizini sildim (yedeklemeden sonra elbette) temizleme ve svn güncellemesi yaptım ve her şey tekrar çalışıyordu.


Bu benim "svn berbat" dosyama eklendi ekleyebilirsiniz.
Speck

0

Her şeyden önce projeyi bir klasörde sisteminize alın. Daha sonra .svn klasörünü çakışma projesinden kaldırın ve .svn klasörünü yeni çıkış klasöründen kopyalayın ve çalışan kopya klasörünüze yapıştırın. Sonra sorun çözüldü.


0

Yaşadığım ortak bir görev, bir repo dizini hazırlama ve başka bir repoya kopyalamak zorundaydı - hem SVN altında hem de her ikisi de aynı adı çağırıyordu. Benim için çalışma şekli şuydu:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
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.