2010-06-21 23 views

Respuesta

10

Suele ver esto si tiene una situación en la que ha creado un directorio en la sucursal (incluso creo que si no lo ha registrado), pero mientras tanto alguien también ha creado un directorio del mismo nombre en el baúl. Entonces, cuando cambias de rama a troncal, estás tratando de verificar la versión del directorio de trunk, pero no puede porque ya existe y por lo tanto no quiere destruir tu versión del mismo.

EDIT:

La mejor manera de resolver esto es para cambiar el nombre de este directorio en su copia de trabajo a continuación, actualizar. Después de la actualización, puede decidir si necesita copiar los contenidos en el directorio recién creado.

Edit2:

No es una buena manera de resolver esto de forma automática SVN. Parece que ha creado esta carpeta en su copia de trabajo (que está actualmente desprotegida en la sucursal) mientras que otra persona ha creado una carpeta con este nombre en el tronco. Cuando cambias, intentas crear el nuevo directorio, pero no puede porque ya tienes uno. Sigo manteniendo que el único es cambiar el nombre del directorio temporalmente, luego cambiar y luego comparar el contenido de ambos directorios para ver si hay archivos adicionales que necesita agregar o fusionar.

+0

Esta respuesta no puede proporcionar una resolución adecuada para el problema. ¿Eres consciente de cómo resolver esto? (Actualmente me encuentro con este problema, y ​​mi mejor solución es hacer un checkout limpio, que consume mucho tiempo) –

+0

Ver la respuesta actualizada –

+0

Tengo una situación donde el cambio de nombre no es una buena opción. ¿Hay alguna manera de repararlo? –

3

Sospecho que \ Path \ To \ The \ Directory no existe en la rama, pero existe en la línea troncal. Recientemente agregado al maletero tal vez? Cuando cambias, SVN piensa que debería agregarlo a tu directorio local, ya que no se supone que esté en la rama desde la que estás cambiando. Pero está ahí de todos modos. Esto podría ser el resultado de un cambio previo sin una comprobación adecuada. es decir, usted hizo este cambio antes, y luego, cuando cambió de la cajuela a la rama, no limpió la suciedad. así que ahora el directorio sobrante está presente y no espera verlo.

2

Tal vez Path/To/The/Directory no existe en su rama actual, pero existe en el tronco?

Otra cosa que podría ser el problema es cuando el servidor SVN está ejecutando un sistema operativo sensible a mayúsculas y minúsculas (* nix, por ejemplo), y está utilizando Windows. En ese caso, el servidor SVN tendrá en cuenta:

Path/To/The/Directory 
Path/To/The/directory 

como dos directorios diferentes. Esto generalmente ocurre cuando alguien hace un cambio de caso en el nombre del directorio.

2

Una solución simple es usar svn switch con la bandera --force.

Por ejemplo, vi el error después de cambiar a una rama, cuando cambié de nuevo a la línea externa. Esto solucionó mis problemas:

svn switch --force ^/trunk 
0

Para solucionar este error, dejando el directorio en su lugar, me encontré con la siguiente técnica funcionó:

  • SVN cambiar el directorio a la ruta correcta en el repositorio (si ya no está apuntando allí).
  • Mueva el.svn carpeta oculta dentro del directorio a alguna ubicación segura (su escritorio).
  • SVN Limpieza y actualización del directorio principal. La actualización puede provocar el mismo error en algún subdirectorio. Ignora esto.
  • Se habrá creado una nueva carpeta oculta .svn dentro del directorio. Vuelva a colocar la carpeta oculta .svn original dentro del directorio, sobrescribiendo los contenidos existentes de la nueva carpeta .svn. No recuerdo si hice esto debido a algún error, o como presentimiento ... de todos modos, pareció ser el truco.
  • SVN actualiza el directorio nuevamente.
  • Voila!

Tenga en cuenta que al menos una vez en un sistema, este truco resultó en todos los subdirectorios/archivos que muestran? Eliminar una carpeta .svn de un subdirectorio y Limpiar/Actualizar el elemento principal de nuevo hizo el truco.

No estoy seguro de qué es el vudú, pero me comprometí a realizar cambios y actualicé varios sistemas posteriormente y todos parecen felices.

FYI llegué a este estado debido a una situación inusual:

/foo fue un svn: externos a/newfoo/bar, y esta disposición necesaria para ser deshecho a/newfoo/bar fue trasladado y renombrado como/foo.

  • He eliminado el svn: propiedad externa en/apuntando a/foo, y confirmado.
  • Utilicé el navegador de repositorio de TortoiseSVN para mover/newfoo/bar a/bar, luego renombré/bar a/foo.
  • SVN Actualización en mi copia local primero dio como resultado el mensaje de error que/foo estaba apuntando a/newfoo/bar cuando/foo existía (o somesuch).
  • I SVN cambiado/foo a la nueva ruta/foo
  • Ahora la actualización de SVN ha dado como resultado el error "el directorio versionado del mismo nombre ya existe".
Cuestiones relacionadas