2010-02-16 7 views
19

Estoy tratando de actualizar nuestro sitio en vivo desde el repositorio SVN. Hasta donde sé, no hay nada en los repositorios. que debería entrar en conflicto con cualquier cosa en el directorio de copia de trabajo. Pero cuando trato de "svn up" en el directorio raíz del público, me sale el siguiente error:SVN: ¿Qué significa el estado "cambiado en relación con su principal"?

svn: REPORT request failed on '/svn/oursite/!svn/vcc/default' 
svn: Working copy path 'app' does not exist in repository 

Cuando corro "svn status" en la raíz de documento, veo lo siguiente:

docroot$ svn st -N 
    +S app 
    +S downloads 
    +S index.php 
    (etc.) 

De acuerdo con los documentos, la bandera S indica whether the item is switched relative to its parent. ¿Qué significa eso incluso, y qué puedo hacer para solucionarlo?

EDIT: Debo mencionar que soy el único que ha trabajado con el repositorio SVN. He estado trabajando con eso todo el día, intentando derrotar un problema de corrupción tras otro a medida que cambio las cosas.

(SVN es grande, pero seguro que es frágil ... parece romper si sólo echar un vistazo a mal!)

+2

No voy a plantear una respuesta porque realmente no tengo ni idea, pero puede ser tan simple como que alguien haya emitido un svn sw dentro de esos directorios. ¿Puede darnos una información svn dentro de cualquier cosa que tenga un + S (o una pequeña muestra). –

+0

Soy el único que trabajó con el repositorio SVN, y no emití un 'svn sw'. Pero gracias por señalar esa omisión en mi publicación original, la editaré en consecuencia. –

+1

Ugh, me estás diciendo. Si tienes alguna inclinación, trataría de moverme a git-svn. Obtienes una porción de la felicidad adicional que es git con muchas correcciones de svn. Mover cosas está bien, reemplazar directorios está bien, y exportar solo significa que copias la carpeta y eliminas .git. Es un gran sistema. –

Respuesta

28

En la misma carpeta que el que se ha ejecutado svn status, ejecute el siguiente comando:

svn info app 

Esto le mostrará en qué URL está apuntando el metadato svn de la carpeta de la aplicación. Probablemente verás que apunta a otra ubicación en comparación con la que esperarías según la URL de la carpeta principal.

Puede usar svn switch para señalar cada carpeta conmutada a la URL correcta, o simplemente eliminar cada carpeta conmutada con rm -rf y luego hacer una svn update.

actualización después de la relectura pregunta: Scott tiene razón cuando dice que las carpetas conmutadas no deben causar errores cuando se hace un svn update.

La razón por la que experimenta problemas con su copia de trabajo es porque se mueve o cambia el nombre de las carpetas sin utilizar el comando svn mv. Este es un clásico error novato de SVN; He estado involucrado en la formación de nuevos usuarios SVN y he visto esto mucho.

Es bastante difícil reparar una copia de trabajo después de tales manipulaciones erróneas. La mejor manera de solucionarlo es, por lo general, hacer una nueva compra. Future versions de SVN centralizará Subversion 1.7 tiene ahora centralized the .svn metadata, reduciendo la oportunidad de tales errores.

+0

Gracias wcoenen, terminé resolviéndolo a través de la fuerza bruta (también conocido como eliminar y volver a agregar mierda hasta que todo funcionó de nuevo), pero esta parece la solución "correcta". –

+3

Aw man, no fair! ¡Usaste mi "solución" y obtuvo la marca de verificación! ;) –

8

Creo que el directorio está dañado de alguna manera. Si no es un gran problema para activarlo, estoy seguro de que eliminar el directorio y volver a subir/sacar hará que el problema desaparezca.

No creo que tengan razón sobre el directorio que se cambia, porque definitivamente puede ejecutar svn en medio de directorios conmutados sin problema.

Aquí hay un chico que lo resolvió de manera destructiva (http://andychase.net/posts/2006/04/working-copy-path-foo-does-not-exist-repository), y varias otras instancias como esa son bastante fáciles de buscar.

0

Acabo de encontrar una solución que funcionó aquí.La secuencia de acciones:

Abra un archivo que solo existe en la rama actual en un editor de texto.

  1. Cambie a otra sucursal.
  2. Guarde el archivo en el editor.
  3. Cambiar de nuevo: ahora se queja de que no puede porque el archivo será reemplazado por el interruptor.
  4. Elimina el archivo.
  5. Rehacer el interruptor. Ahora todos los archivos tienen el estado "S".
  6. Haga el interruptor una vez más. Ahora todo es felicidad en la tierra de VCS obsoletos.
1

Me encontré con este problema después de copiar algunos archivos de un directorio localmente desprotegido a otro, luego intenté agregar los archivos. El problema era que también había copiado el directorio .svn de los archivos de origen, lo que confundió la subversión. Eliminar el directorio .svn después de copiar los archivos solucionó mi problema.

+0

Este fue mi problema también. Muy peligroso "clonar" a mano. – mobibob

Cuestiones relacionadas