Cómo resolver el mensaje "edición local, eliminación entrante al actualizar"
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 ...
a posteriori por error (debería haberlo hecho svn update .
en su lugar).
Entonces, ahora, cuando lo hago svn status .
, recibo estos mensajes de conflicto de árboles.
Encontré el documento aquí pero no estoy seguro de cómo "fusionarlo" según el documento.
¿Cómo deshacerse de ellos?
Creo que mi copia de trabajo está sincronizada con el repositorio. No sé por qué aparecen estos mensajes. Estos archivos deben eliminarse y, hasta donde yo sé, se eliminan en todas partes. Lo intenté svn update .
y svn revert .
todavía recibo este mensaje cuando lo hago svn status .
.
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 es sobre directorios en lugar de archivos, reemplácelo touch
con mkdir
y rm
con 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 editas un archivo mientras otra persona elimina el archivo y lo confirma primero. Como buen ciudadano de svn, realiza una actualización antes de realizar 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 que se eliminen los archivos. Buen trabajo svn.
No debería svn resolve
funcionar, por cualquier motivo, puedes hacer lo siguiente:
Situación inicial: faltan archivos locales, la actualización está en conflicto.
$ svn st
! + C foo
> local edit, incoming delete upon update
! + C bar
> local edit, incoming delete upon update
Vuelva a crear los archivos en conflicto:
$ touch foo bar
Si el conflicto es sobre directorios, reemplácelo touch
con mkdir
.
Nueva situación: archivos locales que se agregarán al repositorio (sí, claro, svn, lo que digas), la actualización sigue en conflicto.
$ 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 a svn le gustan (es decir, eliminados):
$ svn revert foo bar
Nueva situación: archivos locales no conocidos por svn, la actualización ya no genera conflictos.
$ svn st
? foo
? bar
Ahora podemos eliminar los archivos:
$ rm foo bar
Si el conflicto es sobre directorios, reemplácelo rm
con rm -r
.
svn ya no se queja:
$ svn st
Hecho.
Intenta resolver el conflicto usando
svn resolve --accept=working PATH
Acabo de tener 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