2010-01-07 17 views
23

Recientemente encontré un comportamiento muy extraño de subversión.No se puede resolver el conflicto del árbol con el SVN

Acabo de fusionar mi copia local de una rama con una rama remota. Todo fue sin problemas, pero tengo 1 conflicto de árbol (eliminación local, actualización remota).

Bien, pensé que, modifiqué la copia de trabajo apropiadamente y ejecuté "svn resolve --accept = working -R.".

Subversion dijo que había resuelto mis problemas y que "svn st" ya no mostraba ningún problema. Entonces, traté de comprometerme, pero svn me dijo que una de las carpetas internas (dentro de mi conflictiva) estaba desactualizada y me sugirió que se desconectara, ¡PERO hizo que la carpeta volviera a estar en conflicto!

¿Qué debo hacer para salir de este círculo vicioso?

+0

posible que desee revisar las respuestas y aceptar una respuesta diferente – FlipMcF

Respuesta

8

Esto puede o no puede ayudar, pero a veces un "sVN limpieza" solucionará los problemas de metadatos extraños. Si saca una copia de trabajo limpia, ¿la copia limpia tiene el mismo problema? Si es así, la respuesta anterior suena como un paso en la dirección correcta

+0

Ah, gracias, me olvidé de la limpieza ... Necesito probar esta. – Anton

5

puede utilizar un otro camino que el comando svn resolución:

  1. Crear un parche del fichero en conflicto. (O una copia de seguridad de su versión de la carpeta en conflicto con svn export ...)
  2. actualización de su repositorio (svn update)
  3. Aplicar el parche realizado previamente (o reemplazar el archivo/carpeta en conflicto con la copia de seguridad)
  4. confirmar el cambio (svn commit)
+0

que en realidad es lo que he terminar con :( – Anton

+1

Cuando SVN no está funcionando normalmente, significa que la carpeta .svn está en mal estado. El comando de limpieza de Svn puede ayudar, pero nunca funciona para mí, así que estoy usando este método cada vez ... (triste). No olvide marcar esta publicación como "respuesta aceptada" si funciona (o si no, esta pregunta seguirá sin respuesta) – Phong

0

Es probable que no haya actualizado sus carpetas cuando realizó la fusión, o hubo un conflicto en alguna parte antes de la fusión. Para solucionarlo, debe revertir su troncal (carpeta de destino) a la revisión anterior. Luego ejecute la limpieza en esa carpeta. Luego ejecute la limpieza en la carpeta de la rama (carpeta de origen). Luego actualiza ambas carpetas nuevamente. Si está recibiendo líneas en rojo en cualquier flujo de trabajo, primero debe revertir esos archivos y luego ponerlos en el estado en el que los desea. Luego actualice las carpetas (sí, una vez más). Finalmente realice la fusión nuevamente.

41
~/sandbox/jabira > svn resolve --accept=theirs-full testClient/ 
svn: warning: Tree conflicts can only be resolved to 'working' state; 'testClient' not resolved 

~/sandbox/jabira > svn resolve --accept=working testClient/ 
Resolved conflicted state of 'testClient' 

Esperanza esta ayuda

+1

¡Gracias, ayudó! Supongo que es fácil malinterpretar el mensaje de advertencia de svn, que svn está en mal estado. En realidad, es una instrucción de qué hacer en este caso. –

0

Esto es lo que funcionó para mí a abandonar todos los cambios locales y voy con los archivos desde el repositorio del servidor:

svn update --accept theirs-full 

svn resolve --accept theirs-full <pathname> 

aparece este mensaje: W155027: conflicto de árbol solo se puede resolver con 'funcionamiento'

Unintuitive paso siguiente pero esto realmente corta el catch-22:

svn resolve --accept=working <pathname> 

AHORA revertir todos los cambios de "trabajo" recursivamente. Esto deshizo todos mis cambios locales.

svn revert -R . 

Volver a la normalidad, sin errores:

svn update 
Cuestiones relacionadas