2011-05-27 16 views
9

Estoy tratando de hacer una confirmación en mi proyecto y me encuentro con el siguiente error. Prestar mucha atención a la ruta:SVN: ¿No se pueden confirmar 'x' e 'y' porque se refieren a la misma URL?

Commit failed (details follow): 
Cannot commit both 
'C:\Development\Project\branches\nextver\project\bin\com\companyname\blah\Foo.java' 
and 
'C:\Development\Project\branches\nextver\project\src\com\companyname\blah\Foo.java' 
as they refer to the same URL 

Cómo en el mundo ocurrió esto? ¡Nunca tuve mis archivos fuente en la ruta bin en Eclipse! ¿Que puedo hacer para arreglarlo? Por favor, dime que hay algo mejor que comprobarlo de nuevo y reemplazar todos los archivos. Tengo 191 archivos Java solo, sin mencionar recursos y archivos Eclipse.

+0

Es posible que Eclipse no esté transmitiendo el problema correcto. ¿Puedes escribir 'svn status' en el directorio raíz de tu proyecto usando la línea de comando y editar la pregunta para que puedas pegar el resultado? –

+0

No recibí ningún error, solo una larga lista de archivos agregados, eliminados y modificados. Nada interesante. Vea mi respuesta a continuación para la solución final de fuerza bruta. – jasonh

Respuesta

1

La solución fue eliminar e ignorar mis directorios bin de mi copia local. De nuevo. Tortoise SVN pareció olvidar que ya había hecho eso antes y no me di cuenta de que los bin dirs se habían colado, lo que llevó a este problema. Después de resolver varios otros problemas que se interpusieron en mi camino (árboles fuente en conflicto, etc.), logré que se comprometiera.

Primero intenté eliminar la carpeta .svn de los directorios bin, pero todo lo que hice fue hacer que se queje de que el directorio bin ya no estaba bajo control de fuente y se detuvo.

+0

Argh, Tortoise SVN y/o svn simplemente no ignorarán la carpeta bin. Se necesita más investigación ... – jasonh

+0

Establezca la propiedad 'svn: ignore' para incluir su directorio' bin' y asegúrese de que el directorio 'bin' tampoco esté en su repositorio. –

1

Prueba esto:

Ir a C:\Development\Project\branches\nextver\project\bin\ y eliminar .svn si usted ve uno. Y luego intenta cometer.

Creo que de alguna manera las cosas en el src incluyendo el .svn se copiaron a bin haciendo que ambos parezcan pertenecer a la misma url en el servidor. Por supuesto que no quieres eso. Es posible que desee corregir su configuración de compilación.

+0

Creo que es posible. Y para evitar eso en el futuro, configure su proceso de compilación para excluir los directorios '.svn'. – gaRex

6

sé que es más de un año desde que usted ha publicado esto, pero esto puede ayudar a alguien más. Acabo de pasar por el mismo problema. Finalmente lo remonté a la configuración del proyecto en Eclipse. En mi caso, lo que sucedió es que el proceso de compilación dentro de eclipse fue "construir"/copiar TODOS los archivos en la carpeta de origen a la carpeta de compilación. Esto causó que el directorio .svn de la fuente se copiara a la carpeta de compilación y así es como Subversion se confunde. Si revisas las rutas a través de RepoBrowser (estoy usando Tortoise en un entorno Windows), las rutas apuntan a los directorios correctos (fuente y compilación), pero si ejecutas "svn info" desde el directorio en tu máquina local, encontrarás que el directorio de origen y de construcción apunta a la misma URL (de ahí el mensaje).

Una vez que me di cuenta del problema estaba dentro de Eclipse y no específica a la subversión era fácil para buscar una solución. Es necesario añadir "**/SVN /." A las exclusiones de origen en el Camino de construcción Java de la pestaña Fuente:

Proyecto -> Propiedades -> Java Build Path.

+2

PD. Aparentemente, si utiliza el complemento subversion Subclipse dentro de Eclipse, no obtendrá este problema. Estoy usando Subversion fuera de Eclipse. –

0

En mi caso, yo tenía un archivo de configuración que fue compartido entre dos proyectos pero me había actualizado el archivo (con los mismos cambios) en ambos proyectos.

SVN no puede cometer, ya que piensa que hay dos conjuntos diferentes de los cambios que estar comprometidos con el mismo archivo.

Así que revirtió una de las copias y luego fue capaz de comprometerse.

Cuestiones relacionadas