Cara mengatasi pesan "edit lokal, hapus yang masuk saat pembaruan"

293

Ketika saya melakukan svn status ., saya mendapatkan ini:

!     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

pada dasarnya, file-file ini tidak boleh berada di repositori. Pengembang telah menghapusnya. Kemudian, saya pikir saya melakukan kesalahan svn rm ...setelah fakta (seharusnya dilakukan svn update .sebagai gantinya).

Jadi sekarang, ketika saya melakukannya svn status ., saya mendapatkan pesan konflik pohon ini.

Saya menemukan doc di sini tetapi tidak yakin bagaimana "menggabungkan" sesuai dengan doc.

Bagaimana cara menyingkirkannya?

Saya pikir copy pekerjaan saya sinkron dengan repositori. Tidak tahu mengapa pesan ini muncul. File-file ini harus dihapus dan dihapus sejauh yang saya tahu di mana-mana. Saya mencoba svn update .dan svn revert .tetapi saya masih mendapatkan pesan ini ketika saya melakukannya svn status ..

Xah Lee
sumber
1
jawaban lesmana juga berfungsi untuk pesan tersebut"local missing or deleted or moved away, incoming dir edit upon merge"
Warlike Chimpanzee

Jawaban:

434

Versi pendek:

$ 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

Jika konfliknya adalah tentang direktori, bukan file, maka ganti touchdengan mkdirdan rmdengan rm -r.


Catatan: prosedur yang sama juga berfungsi untuk situasi berikut:

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

Versi panjang:

Ini terjadi ketika Anda mengedit file sementara orang lain menghapus file dan melakukan terlebih dahulu. Sebagai warga negara yang baik, Anda melakukan pembaruan sebelum komit. Sekarang Anda memiliki konflik. Menyadari bahwa menghapus file adalah hal yang tepat untuk Anda hapus file dari copy pekerjaan Anda. Alih-alih menjadi konten svn sekarang mengeluh bahwa file-file lokal hilang dan bahwa ada pembaruan yang saling bertentangan yang akhirnya ingin melihat file dihapus. Kerja bagus svn.

Seharusnya svn resolvetidak bekerja, untuk alasan apa pun, Anda dapat melakukan hal berikut:

Situasi awal: File lokal hilang, pembaruan saling bertentangan.

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

Buat kembali file yang bertentangan:

$ touch foo bar

Jika konfliknya adalah tentang direktori maka ganti touchdengan mkdir.

Situasi baru: File lokal yang akan ditambahkan ke repositori (ya benar, svn, apa pun yang Anda katakan), pembaruan masih saling bertentangan.

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

Kembalikan file ke keadaan svn menyukainya (itu berarti dihapus):

$ svn revert foo bar

Situasi baru: File lokal tidak dikenal svn, perbarui tidak lagi bertentangan.

$ svn st
?       foo
?       bar

Sekarang kita dapat menghapus file:

$ rm foo bar

Jika konfliknya adalah tentang direktori maka ganti rmdengan rm -r.

svn tidak lagi mengeluh:

$ svn st

Selesai

lesmana
sumber
8
Ini juga berfungsi ketika konflik adalah untuk Direktori. Alih-alih menyentuh foo bar, lakukan mkdir foo dan mkdir bar . Yang lainnya sama.
Vipin Johney
Anda dapat menggunakan svn st | grep ! | cut -f 7 -d' ' | xargs touchsebagai satu liner untuk menyentuh semua file yang hilang
Tibor Blenessy
Ingat untuk direktori juga lakukan rm -r foo bar(atau rmdir foo bardi Windows atau jika Anda suka Windows).
percobaan
Jawaban ini menyelamatkan kewarasan saya. Terima kasih.
Sam
159

Cobalah untuk menyelesaikan konflik menggunakan

svn resolve --accept=working PATH
Zellus
sumber
Terima kasih. itu tampaknya menjadi solusi yang tepat. (tidak tahu tentang opsi "mengatasi" sebelumnya. Saya menandainya sebagai jawaban. Meskipun, untuk beberapa alasan tidak bekerja untuk saya, mungkin karena pohon copy pekerjaan saya telah rusak atau yang lainnya ... pada akhirnya saya menyelesaikannya dengan hanya menghapus dir dan melakukan pembaruan.
Xah Lee
1
Awalnya itu tidak bekerja untuk saya, jadi saya memeriksa salinan cabang svn lainnya di folder sementara. Kemudian saya menghapus PATH yang menyebabkan konflik dan melakukan perubahan. Setelah itu saya kembali ke salinan asli saya dan menjalankan perintah ini. Ini berfungsi dengan pesan "Menyelesaikan keadaan konflik PATH" Ini berfungsi, terima kasih :)
Durin
Pemahaman saya adalah bahwa tidak masalah jika dokumen asli dihapus atau tidak ada dalam repositori, karena "resolusinya" hanya berfungsi pada copy pekerjaan.
govi
solusi sempurna untuk saya
Sergio Álvarez
20

Saya baru saja mendapat masalah yang sama dan saya menemukan itu

$ svn revert foo bar

memecahkan masalah.

tekad svn tidak bekerja untuk saya:

$ 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
sligocki
sumber
2

Jika Anda belum membuat perubahan di dalam direktori yang konflik, Anda juga bisa rm -rf conflicts_in_here/dan kemudian svn up. Setidaknya ini berhasil bagi saya.

Udo
sumber
1

Anda dapat memaksa untuk mengembalikan direktori lokal Anda ke svn.

 svn revert -R your_local_path
Gordon Ma
sumber
Terima kasih, juga membantu saya untuk menyelesaikan A + C path/to/dirdan> local dir edit, incoming dir delete or move upon update
RAM237
0

Jadi Anda bisa mengembalikan file yang sudah Anda hapus tapi ingat, Jika Anda mengerjakan semua jenis proyek dengan file proyek yang disetel (seperti iOS), mengembalikan file akan menambahkannya ke struktur folder sistem Anda tetapi tidak pada struktur file proyek Anda. langkah-langkah tambahan mungkin diperlukan jika Anda berada dalam kasus ini

CWineland
sumber
0

Masalah ini sering terjadi ketika kami mencoba untuk menggabungkan perubahan cabang lain dari direktori yang salah.

Ex:

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

Konflik yang muncul saat eksekusi adalah:

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

Dan ketika Anda memilih q untuk keluar dari resolusi , Anda mendapatkan status sebagai:

 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

yang jelas berarti bahwa penggabungan tersebut berisi perubahan yang terkait dengan Branch1_SubDirdan Branch1_AnotherSubDir, dan folder ini tidak dapat ditemukan di dalam Branch1_SubDir(jelas direktori tidak bisa berada di dalam dirinya sendiri).

Cara menghindari masalah ini di tempat pertama:

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

The memperbaiki sederhana untuk masalah ini yang bekerja untuk saya:

svn revert -R .
Saurav Sahu
sumber