SVN: "conflicto de tree ya existe", pero no había ninguno antes de intentar fusionarme

Recibo este post de error de SVN:

svn: bash de agregar conflicto de tree que ya existe

Ahora, esto ya se ha preguntado en este sitio y la explicación dada es que un conflicto de tree no se ha resuelto después de una combinación previa, y ahora SVN está intentando agregar el mismo conflicto de tree nuevamente.

Así que llamé "estado de svn" y marqué todos los conflictos de tree como resueltos. Luego hice * svn revertir -R ** y comprobé dos veces que la salida de "svn status" está completamente vacía. Luego probé la fusión nuevamente, con exactamente el mismo post de error en el mismo lugar.

Me parece que svn intenta agregar un conflicto de tree en el mismo lugar dos veces durante la misma operación de fusión, que, con todo el respeto, sería un error grave en SVN.

Parece que la fuente de esto fue una carpeta que cambié de nombre de una manera que no es del agrado de SVN. En lugar de usar el command svn move, cambié el nombre de la carpeta localmente, eliminé el nombre de la carpeta anterior con svn remove y agregué el nuevo con svn add. Sin embargo, esto genera una "carpeta fantasma" que tiene el nombre anterior, no existe ni en la copy de trabajo ni en el repository, pero SVN cree que existe. Una carpeta fantasma causa el conflicto de tree fatal que mencioné anteriormente.

Así es como resolvimos esto:

  1. Fusiona el tronco en la twig. La twig es ahora lo que eventualmente quiere que sea su baúl.

  2. Crea una nueva twig como clon del tronco.

  3. Cambia tu directory de trabajo a la twig actualizada (es decir, la que finalmente deseas como la troncal). Use svn diff > update.patch allí.

  4. Copie update.patch en la carpeta de la twig de clonación recién creada.

  5. Cambie su directory de trabajo al de la twig clon y aplique el parche. La twig clon ahora es casi idéntica a la twig actualizada, con una diferencia: no se menciona la carpeta fantasma en esos files svn ocultos.

  6. Combina la twig de clon de nuevo en el tronco.

Antecedentes del problema

Hice cambios en mi copy de trabajo pensando que si no los "comprometo" explícitamente, no afectará mi repository en el server.

Y para repeler una advertencia (no recuerdo), utilicé "actualización" un par de veces. Después de encontrar la salida de este agujero que yo mismo cavé, entiendo que el command "actualizar" funciona de la siguiente manera:

  1. si la copy de trabajo es modificada / última, se comprometerá con el repository.
  2. si el repository es el más reciente, funcionará como "pago y envío" (por lo que puedo entender).

Estoy usando 2 twigs ( dev y alpha ). Y quería fusionar la twig dev en alfa .

Pasos usados ​​para arreglar

  1. actualizar mi alfa a la revisión que cometí intencionalmente,
  2. desarrollador combinado en alfa .

Nota: estaba usando SmartSVN.

Tuve el mismo problema. Hice clic derecho y decidí revertir. Eso resolvió todos los problemas de fusión de conflictos.