2008-12-17 21 views
200

Recientemente nuestro servidor svn fue cambiado e hicimos un cambio de svn.Error de SVN - No es una copia de trabajo

Dado que la copia de trabajo tenía una gran cantidad de recursos no versionados, la copia de trabajo se bloqueó y comenzamos a cambiar carpeta por carpeta para todas las carpetas bajo svn, que funciona perfectamente bien.

Pero en el nivel superior del repositorio, cuando trato de actualizar archivos, obtengo el svn : Copia de trabajo '.' bloqueado error y la limpieza tampoco ayuda. Cuando hago la limpieza, obtengo errores como estos - svn: 'content' no es un directorio de copia de trabajo

El pago y envío nuevos no son una opción. ¿Hay alguna otra forma de limpiar y liberar los bloqueos y hacer el cambio por completo?

EDIT: El último párrafo de la respuesta de JesperE

Si obtiene un "no es una copia de trabajo" cuando haciendo un recursivo "svn cleanup" mi conjetura es que usted tiene un directorio que debería ser una copia de trabajo (es decir, el directorio .svn en el toplevel lo dice), pero le falta su propio directorio .svn. En ese caso, podría tratar de eliminar/sólo hay que mover que directorio y luego hacer una actualización local

parece ser la solución al problema en el repositorio. Identifiqué esas carpetas e hice una nueva comprobación de esas carpetas específicas por sí solas y ¡guau, las cerraduras se lanzan en la limpieza subsiguiente! Muchas gracias JesperE !!

embargo, todavía no puedo averiguar el error SVN interruptor que ahora se lee algo así como,

SVN: El repositorio en 'svn: // repourl/reponame/foldername' tiene m uuid'/ reponame', pero el WC tiene 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

¿Alguna idea?

Respuesta

114

Si obtiene una "copia no funcional" al hacer un recursivo svn cleanup supongo que tiene un directorio que debería ser una copia de trabajo (es decir, el directorio .svn en el nivel superior lo dice), pero falta su propio directorio .svn. En ese caso, podría intentar simplemente eliminar/mover ese directorio y luego hacer una actualización local (es decir, rm -rf content; svn checkout content).

Si obtiene un error not a working copy, significa que Subversion no puede encontrar un directorio .svn adecuado allí. Compruebe si hay un directorio .svn en contents

La solución ideal es una nueva comprobación, si es posible.

+1

Acepto, haga una nueva compra en lugar de intentar mover su copia de trabajo con el repositorio. – Tigraine

+2

Mi problema es que migré a un nuevo servidor y restauré mis copias de seguridad del sistema de archivos con el trabajo aún no comprometido, y usé svnadmin para filtrar los proyectos antiguos que ya no necesito. Entonces mi repositorio contiene toda la información que necesito, pero tiene un nuevo UUID. En este caso, voy a actualizar los archivos modificados, obtener una nueva comprobación y luego deshacer. – Drarok

+0

Su sugerencia en el primer párrafo no funciona en mi sistema (W7 + Cygwin). Más bien, la actualización de Rm & svn lo hizo. –

0

svn: El repositorio en 'svn: // repourl/reponame/foldername' tiene uuid 'm/reponame', pero el WC tiene 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Cada repo de subversión tiene un identificador único (uuid). Subversion usa esto para asegurarse de que el repositorio sea realmente el mismo cuando hace cosas como cambiar. Probablemente deberías cambiar el uuid en el servidor para que sea el mismo que antes.

+0

Cambiar uuid en el servidor - ¿Cómo hacer esto? –

+0

Honestamente, no tengo ni idea, solo asumo que se puede hacer. ¿Has registrado el libro de Subversion y dice algo al respecto? – JesperE

0

¿Podría ser un formato de copia de trabajo no coinciden? Cambió entre svn 1.4 y 1.5 y las herramientas más nuevas convierten automáticamente el formato, pero luego las antiguas ya no funcionan con la copia convertida.

0

Debe haber eliminado un archivo SVN - base de su proyecto (que son archivos de solo lectura). Debido a esto obtienes este error.

Eche un vistazo a un nuevo proyecto, combine los cambios (si los hubiera) de su proyecto anterior SVN con uno nuevo usando "Winmerge" y confirme los cambios en su última comprobación.

3

Solución: directorio Cambiar nombre que no se Pedido/actualizar/restaurar este directorio nuevo Mover archivos 'copia de trabajo' del directorio renombrado como nueva Commit cambios

Motivo: Usted ha hecho algunos cambios en algunos archivos en el directorio .svn, se rompe 'copia de trabajo'

0

@JesperE mentions que necesita para cambiar el uuid. Lo siguiente debería ayudarte a lograr esto.

En SVN 1.5+, puede hacer svnadmin setuuid; luego puede verificar que se haya configurado correctamente usando svnlook uuid. En versiones anteriores de SVN, es un proceso más difícil. Ver http://chestofbooks.com/computers/revision-control/subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html

Además, el UUID de "m/reponame" parece sospechoso. Creo que debería ser un número con formato hexadecimal, como la copia de trabajo, así que tal vez esta acción mejorará las cosas :-)

[Originalmente comencé en @JesperE's answer, pero creé esta respuesta para que sea más obvio para las personas y más útil para Google. Desde entonces, eliminé mis comentarios. ]

46

entré en una situación similar (svn: 'papers' is not a working copy directory) de una manera diferente, así que pensé que había puesto mi historia combate (simplificado):

$ svn add papers 
svn: Can't create directory 'papers/.svn': Permission denied 

Ups! corregir los permisos ... entonces:

$ svn add papers 
svn: warning: 'papers' is already under version control 
$ svn st 
~  papers 
$ svn cleanup 
svn: 'papers' is not a working copy directory 

E incluso en movimiento papers fuera del camino y en funcionamiento svn up (que trabajó para el OP) no solucionarlo. Esto es lo que hice:

$ mv papers papers_ 
$ svn cleanup 
$ svn revert papers 
Reverted 'papers' 
$ mv papers_/ papers 
$ svn add papers 

Eso funcionó.

1

Acabo de recibir "no una copia de trabajo", y para mí el motivo fue el Automouter en Unix. Solo un nuevo "directorio de cd/path/to/work /" hizo el truco.

1

Si creó un archivo dentro de un nuevo directorio, en lugar de 'svn add newdir/newfile' use 'svn add newdir' porque necesita agregar el directorio. Todos los archivos dentro del directorio se agregarán de manera predeterminada.

5

Lo resuelto por

  1. Copiar una copia de seguridad de las carpetas impactados
  2. SVN revertir las carpetas impactados
  3. pegar los archivos de nuevo a partir de la copia de seguridad

En mi caso el problema fue debido a los archivos .svn eliminados.

+0

¿Cómo hacerlo? Por favor explique en breve –

1

mismo, que necesitaba una actualización de un 'contrib' carpeta:

  1. trasladó la antigua carpeta de salida,
  2. copiado la nueva
  3. copiado el .svn carpetas en cada uno (sólo tres en mi caso) nueva carpeta.

También en mi caso, el problema se debió a las carpetas .svn eliminadas.

Resuelto.

+0

Encontrado esto aproximadamente 4 horas en la limpieza de SVN usando el plugin de Eclipse - ¡buenos momentos! La copia de trabajo está bloqueada, no, no, cree un mejor mensaje. Gente de Eclipse, gracias. –

5

Tal vez simplemente haya copiado el árbol de la carpeta e intentado agregar el más bajo.

SVN 
|_ 
    | 
    subfolder1 
     | 
     subfolder2 (here you get an error) 

En ese caso, debe enviar el directorio en el nivel superior.

0

Tenía este mismo problema, resulta que teníamos Slik 1.6.2 y Tortoise en la misma máquina. Tortuga había sido actualizada (y había actualizado la copia de trabajo) pero Slik no, por lo que Tortoise funcionó bien, pero las líneas de comando fallaron con:

svn: '.' no es un directorio de copia de trabajo

La eliminación de Tortoise y Slik, y luego la reinstalación de Tortoise con las herramientas de línea de comandos habilitadas solucionó esto por mí.

1

Intenté pegar la carpeta .svn desde la subcarpeta a la carpeta raíz. ¡¡¡Funciona!!!

1

Esto es lo que hice: Tronco

  1. de cambio de nombre a trunk_
  2. crear un nuevo tronco carpeta
  3. Re-checkout e interrumpir el proceso después de unos cuantos archivos se comprueban de salida
  4. Mueva el archivos de trunk_ a trunk
  5. Hacer svn cleanup
  6. Hacer svn update. Esto actualizará el estado de los archivos y luego todos sus archivos serán versionados.
1

También encuentro este problema en la operación svn diff, fue causado por una ruta de archivo incorrecta, debe agregar './' para indicar el directorio actual del archivo.

0

para Mac: - tome la caja del lado del servidor y una nueva ventana se abrirá para seleccionar el directorio de su máquina local que ponga su todo el código en la carpeta seleccionada a continuación, abra lado local SVN y agregar y comprometer el proyecto

0

Hoy He encontrado el mismo problema /FILE_NAME/ is not a working copy en la mañana y he pasado más de dos horas para resolverlo. Después de mucho tiempo de RND y Google encontré alguna solución y eso es CHECKOUT.

  1. CHECKOUT de SUBVERSION a local como nuevo proyecto.
  2. Cambie parte del código en el archivo java y COMPROMETE el proyecto.
  3. Funciona para mí.

Espero que sea útil para usted.

0

Elimine la carpeta .svn que está presente en su máquina local. Presione el ícono de windows y escriba .svn, elimine toda la carpeta. Funcionó para mí

Cuestiones relacionadas