“Yerel düzenleme, güncelleme sonrasında gelen silme” mesajı nasıl çözülür?


293

Bir yaptığımda svn status ., bunu elde:

!     C auto-complete-config.elc
      >   local edit, incoming delete upon update
!  +  C auto-complete.elc
      >   local edit, incoming delete upon update
!  +  C popup.elc
      >   local edit, incoming delete upon update
!  +  C fuzzy.elc
      >   local edit, incoming delete upon update

temel olarak, bu dosyalar depoda olmamalıdır. Bir geliştirici bunları kaldırdı. Sonra, sanırım bir svn rm ...gerçeği sonra yanlışlıkla yaptım ( svn update .yerine yapmalıydım ).

Şimdi yaptığım zaman svn status ., bu ağaç çatışma mesajlarını alıyorum.

Dokümanı burada buldum, ancak dokümana göre nasıl “birleştireceğinden” emin değilim.

Onlardan nasıl kurtuluruz?

Çalışma kopyamın veri havuzuyla senkronize olduğunu düşünüyorum. Bu mesajların neden gösterildiğini bilmiyorum. Bu dosyalar her yerde bildiğim kadarıyla kaldırılmalı ve kaldırılmalıdır. Denedim svn update .ve svn revert .ancak ben ne zaman hala bu mesajı alır svn status ..


1
lesmana'nın cevabı da mesaj için çalışıyor"local missing or deleted or moved away, incoming dir edit upon merge"
Warlike Chimpanzee

Yanıtlar:


434

Kısa versiyon:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar

Çakışma dosyalar yerine dizinlerle ilgiliyse touch, mkdirve rmile değiştirin rm -r.


Not: Aynı prosedür aşağıdaki durum için de geçerlidir:

$ svn st
!     C foo
      >   local delete, incoming delete upon update
!     C bar
      >   local delete, incoming delete upon update

Uzun versiyon:

Bu, bir başkası dosyayı sildiğinde ve önce işleme koyarken bir dosyayı düzenlediğinizde olur. İyi bir svn vatandaşı olarak taahhütte bulunmadan önce güncelleme yaparsınız. Şimdi bir çatışmanız var. Dosyayı silmenin, dosyayı çalışan kopyanızdan silmeniz için doğru olan şey olduğunu anlamak. İçerik olmak yerine svn artık yerel dosyaların eksik olduğundan ve sonuçta silinen dosyaları görmek isteyen çakışan bir güncelleme olduğundan şikayet ediyor. İyi iş svn.

Çalışmamalı svn resolve, ne sebeple olursa olsun aşağıdakileri yapabilirsiniz:

Başlangıç ​​durumu: Yerel dosyalar eksik, güncelleme çakışıyor.

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

Çakışan dosyaları yeniden oluşturun:

$ touch foo bar

Çakışma dizinlerle ilgili ise, touchile değiştirin mkdir.

Yeni durum: Depoya eklenecek yerel dosyalar (evet doğru, svn, ne derseniz deyin), güncelleştirme hala çakışıyor.

$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update

Dosyaları svn tarafından beğenilen duruma geri döndürün (silinen anlamına gelir):

$ svn revert foo bar

Yeni durum: svn tarafından bilinmeyen yerel dosyalar, güncelleme artık çakışmıyor.

$ svn st
?       foo
?       bar

Şimdi dosyaları silebiliriz:

$ rm foo bar

Çakışma dizinlerle ilgili ise, rmile değiştirin rm -r.

svn artık şikayet etmiyor:

$ svn st

Bitti.


8
Bu, çakışma bir Dizin için olduğunda da işe yarar. Yerine dokunmatik foo bar yapmak mkdir foo ve mkdir çubuğu . Diğer her şey aynı.
Vipin Johney

svn st | grep ! | cut -f 7 -d' ' | xargs touchtüm eksik dosyalara dokunmak için tek bir astar olarak kullanabilirsiniz
Tibor Blenessy

Dizinler için de rm -r foo bar(veya rmdir foo barWindows'ta veya Windows'ı isterseniz) unutmayın.
trysis

Bu cevap aklımı kurtardı. Teşekkür ederim.
Sam

159

Kullanarak çakışmayı çözmeye çalışın

svn resolve --accept=working PATH

Teşekkürler. doğru çözüm gibi görünüyor. (daha önce "çöz" seçeneği hakkında bir şey bilmiyordum. Cevap olarak işaretledim. Yine de, bazı nedenlerden dolayı benim için işe yaramadı, muhtemelen çalışan kopya ağacım bozuk veya neyse ... sonunda çözdüm - Sadece dizini silerek ve güncelleme
yaparak ...

1
Başlangıçta benim için çalışmadı, bu yüzden geçici bir klasörde svn şubesinin başka bir kopyasını kontrol ettim. Sonra çatışmaya neden olan PATH'ı sildim ve değişiklikleri taahhüt ettim. Bundan sonra orijinal kopyama geri döndüm ve bu komutu çalıştırdım. "PATH çakışan durumu çözüldü" mesajı ile çalıştı Bu çalışıyor, teşekkürler :)
Durin

Anladığım kadarıyla, "çözüm" yalnızca çalışma kopyasında çalıştığından, orijinalin depoda silinip silinmediğinin önemi olmayacaktır.
govi

benim için mükemmel bir çözüm
Sergio Álvarez

20

Aynı sorunu daha yeni aldım ve buldum

$ svn revert foo bar

sorunu çözdü.

svn çözüm benim için çalışmadı:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

$ svn resolve --accept working .

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working foo
Resolved conflicted state of 'foo'

$ svn st
!  +    foo
!  +  C bar
      >   local edit, incoming delete upon update

2

Çakışan dizinde herhangi bir değişiklik yapmadıysanız, rm -rf conflicts_in_here/ve sonra da yapabilirsiniz svn up. Bu en azından benim için çalıştı.


1

Yerel dizininizi svn'ye döndürmeye zorlayabilirsiniz.

 svn revert -R your_local_path

Teşekkürler, ayrıca A + C path/to/dir> local dir edit, incoming dir delete or move upon update
çözmemde

0

Bu nedenle, sildiğiniz dosyayı geri alabilirsiniz, ancak hatırlayın, Belirli bir proje dosyasıyla (iOS gibi) herhangi bir proje üzerinde çalışıyorsanız, dosyayı geri döndürmek onu sistem klasörü yapınıza ekler, ancak proje dosya yapınıza eklemez. Bu durumda ek adımlar gerekebilir


0

Bu sorun genellikle , yanlış bir dizinden başka bir şube değişikliğini birleştirmeye çalıştığımızda olur .

Ör:

Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1
         ^^^^^^^^^^^^
   Merging at wrong location

Yürütülmesinde atılan bir çatışma:

Tree conflict on 'Branch1_SubDir'
   > local missing or deleted or moved away, incoming dir edit upon merge

Seçtiğinizde Ve q için çözünürlüğü çıkmak , durumu olarak almak:

 M      .
!     C Branch1_SubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge
!     C Branch1_AnotherSubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge

hangi birleştirme ile ilgili değişiklikleri içerdiğini açıkça araçlar Branch1_SubDirve Branch1_AnotherSubDirve bu klasörlerin içine bulunamadı Branch1_SubDir(besbelli bir dizin kendi içinde olamaz).

İlk etapta bu sorundan nasıl kaçınılır:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location

En basit düzeltme benim için çalıştı Bu sorunla ilgili:

svn revert -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.