Cómo resolver el mensaje "edición local, eliminación entrante al actualizar"

293

Cuando hago un svn status ., me sale esto:

!     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

Básicamente, estos archivos no deberían estar en el repositorio. Un desarrollador los ha eliminado. Entonces, creo que hice un svn rm ...error después del hecho (debería haberlo hecho en su svn update .lugar).

Entonces, cuando lo hago svn status ., recibo estos mensajes de conflicto de árbol.

Encontré el documento aquí, pero no estoy seguro de cómo "fusionarlo" de acuerdo con el documento.

¿Cómo deshacerse de ellos?

Creo que mi copia de trabajo está sincronizada con el repositorio. No sé por qué se muestran estos mensajes. Estos archivos deben eliminarse y se eliminan hasta donde yo sé en todas partes. Lo intenté svn update .y svn revert .todavía recibo este mensaje cuando lo hago svn status ..

Xah Lee
fuente
1
La respuesta de lesmana también funciona para el mensaje"local missing or deleted or moved away, incoming dir edit upon merge"
Warlike Chimpanzee

Respuestas:

434

Version corta:

$ 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

Si el conflicto se trata de directorios en lugar de archivos, reemplace touchcon mkdiry rmcon rm -r.


Nota: el mismo procedimiento también funciona para la siguiente situación:

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

Versión larga:

Esto sucede cuando edita un archivo mientras otra persona lo eliminó y lo confirmó primero. Como buen ciudadano de svn, usted realiza una actualización antes de una confirmación. Ahora tienes un conflicto. Al darse cuenta de que eliminar el archivo es lo correcto, elimine el archivo de su copia de trabajo. En lugar de estar contento, svn ahora se queja de que faltan los archivos locales y de que hay una actualización conflictiva que finalmente quiere ver los archivos eliminados. Buen trabajo svn.

svn resolveNo debería funcionar, por cualquier razón, puede hacer lo siguiente:

Situación inicial: faltan archivos locales, la actualización es conflictiva.

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

Recrea los archivos en conflicto:

$ touch foo bar

Si el conflicto se trata de directorios, reemplácelo touchcon mkdir.

Nueva situación: archivos locales que se agregarán al repositorio (sí, claro, svn, lo que usted diga), la actualización sigue siendo conflictiva.

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

Revierta los archivos al estado que le gusta a svn (eso significa que se eliminó):

$ svn revert foo bar

Nueva situación: archivos locales desconocidos para svn, la actualización ya no es conflictiva.

$ svn st
?       foo
?       bar

Ahora podemos eliminar los archivos:

$ rm foo bar

Si el conflicto se trata de directorios, reemplácelo rmcon rm -r.

svn ya no se queja:

$ svn st

Hecho.

lesmana
fuente
8
Esto también funciona cuando el conflicto es para un Directorio. En lugar de touch foo bar, haz mkdir foo y mkdir bar . Todo lo demás es lo mismo.
Vipin Johney
puede usar svn st | grep ! | cut -f 7 -d' ' | xargs touchcomo un forro para tocar todos los archivos faltantes
Tibor Blenessy
Recuerde que los directorios también lo hacen rm -r foo bar(o rmdir foo baren Windows o si le gusta Windows).
trysis
Esta respuesta salvó mi cordura. Gracias.
Sam
159

Intenta resolver el conflicto usando

svn resolve --accept=working PATH
zellus
fuente
Gracias. Esa parece ser la solución correcta. (no sabía sobre la opción "resolver" antes. Lo marqué como respuesta. Sin embargo, por alguna razón no funcionó para mí, probablemente porque mi árbol de copia de trabajo se ha dañado o no ... al final lo resolví simplemente borrando el directorio y haciendo una actualización.
Xah Lee
1
Inicialmente no funcionó para mí, así que revisé otra copia de la rama svn en una carpeta temporal. Luego eliminé la RUTA que causaba conflicto y cometí los cambios. Después de eso volví a mi copia original y ejecuté este comando. Funcionó con el mensaje "Se resolvió el estado conflictivo de la RUTA" Esto funciona, gracias :)
Durin
Tengo entendido que no habría importado si el original se hubiera eliminado o no en el repositorio, porque "resolver" solo funciona en la copia de trabajo.
govi
solución perfecta para mí
Sergio Álvarez
20

Acabo de recibir este mismo problema y descubrí que

$ svn revert foo bar

resuelve el problema.

svn resolve no funcionó para mí:

$ 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
fuente
2

Si no ha realizado ningún cambio dentro del directorio en conflicto, también puede hacerlo rm -rf conflicts_in_here/y luego svn up. Esto funcionó para mí al menos.

Tú haces
fuente
1

Puede forzar a revertir su directorio local a svn.

 svn revert -R your_local_path
Gordon Ma
fuente
Gracias, también me ayudó a resolver A + C path/to/diry> local dir edit, incoming dir delete or move upon update
RAM237
0

Por lo tanto, puede revertir el archivo que eliminó, pero recuerde: si está trabajando en cualquier tipo de proyecto con un archivo de proyecto establecido (como iOS), al revertir el archivo lo agregará a la estructura de carpetas de su sistema, pero no a la estructura de archivos de su proyecto. pasos adicionales pueden ser necesarios si se encuentra en este caso

CWineland
fuente
0

Este problema a menudo ocurre cuando intentamos fusionar otros cambios de rama de un directorio incorrecto.

Ex:

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

Un conflicto que se lanza en su ejecución es:

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

Y cuando selecciona q para salir de la resolución , obtiene el estado como:

 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

lo que claramente significa que la fusión contiene cambios relacionados con Branch1_SubDiry Branch1_AnotherSubDir, y estas carpetas no se pueden encontrar dentro Branch1_SubDir(obviamente, un directorio no puede estar dentro de sí mismo).

Cómo evitar este problema en primer lugar:

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

La solución más simple para este problema que funcionó para mí:

svn revert -R .
Saurav Sahu
fuente