¿Cómo arreglar "falta el área de administración de la copia de trabajo que falta" en SVN?


184

Eliminé manualmente un directorio que acabo de agregar, sin conexión, en mi repositorio. No puedo restaurar el directorio.

Cualquier intento de hacer una actualización o una confirmación fallará con:

"blabla/.svn" containing working copy admin area is missing.

Entiendo por qué, pero hay de todos modos para arreglar esto.

No quiero verificar el repositorio completo y agregarle mis cambios manualmente, tomaría horas.

Respuestas:


148

De acuerdo con esto: http://www.devcha.com/2008/03/svn-directory-svn-containing-working.html

Extraiga la carpeta "blabla" en una ubicación diferente y luego copie su carpeta .svn nuevamente en la "blabla" original.


62
Tengo mucho SVN. Tirar basura .svnsubdirectorios por todo el lugar debe haber sido la peor idea en el historial de control de versiones.
Johannes Fahrenkrug

9
Amigos, revisen las sugerencias a continuación de Rob, es mucho más fácil que la solución actual.
Mohammad Arif

Mohammed, gracias por el aviso. Eso funcionó para mí. Estaba tratando de hacer que SVN ignorara un directorio de registro, y eliminar .svn me llevó a este problema. La solución de Rob lo resolvió.
Asmor

Johannes, tampoco soy un defensor de SVN, pero la ventaja de los directorios .svn es que puedes consultar los subdirectorios de un repositorio y mantener el control de versiones.
Joseph Persie

@MohammadArif, ahora hay dos "Robs"
Charles Clayton

123

fwiw, tuve una situación similar y usé svn --force delete __dir__ . Eso resolvió el problema para mí. Luego seguí trabajando con mi copia de trabajo como de costumbre.


2
Esto funcionó para mí también. Las actualizaciones y limpiezas fallaron porque el directorio nunca estuvo en el repositorio, pero la copia de trabajo estaba segura de que estaba bajo control de revisión. Me pregunto si agregué el directorio, pero luego lo eliminé antes de comprometerlo.
Magnus

1
Esto es muy bueno. Agregué un directorio, eliminé el .svn pero nunca me comprometí. Esto hizo el truco por completo
Eric

8
Gracias; Esta respuesta me ahorró mucho tiempo. svn cleanupEntonces svn --force delete <directory-that-doesn't-exist-but-should>trabajó para mí.
mpontillo

Trabajé en el segundo intento, primero probé sin --force, que de alguna manera dejó un archivo de bloqueo en .svn del padre que tuve que eliminar manualmente. La segunda vez con --force solucionó el problema.
Jörn Horstmann

3
Hm, ese comando simplemente me da el mismo error de "copia de trabajo".
Oscar

72

Lo que hice para solucionar esto fue eliminar la copia local de la carpeta en cuestión y luego hacer una copia del svn updatepadre directamente después.

Lo arregló de inmediato.


3
No puedo creer ... Lo intenté todo ... ¡y fue así de fácil! Funcionó perfectamente, muchas gracias!
lucaferrario

Esta es la respuesta más directa.
joaerl

35

¿Puedes intentar ver una nueva copia del directorio principal?

Editar: para ser un poco más específico, quise sugerir subir un nivel y eliminar el directorio que lo contiene. Entonces haz un

svn update --set-depth infinity

para reemplazar el directorio


Lo intenté pero por alguna extraña razón, termino con un directorio vacío. No entiendo ...
e-satis

También debería funcionar un <code> svn update blabla </code> explícito del padre.
jmanning2k

@ jmanning2k, eso es lo que pensé también, pero el OP dijo que lo había intentado y que no había funcionado.
Rob Wells

Para aclarar, sugerí --set-depth infinitypor esto: stackoverflow.com/questions/866835/…
Wim Coenen

1
Esto necesita muchos más votos a favor ... una solución limpia rápida y relativamente (para los estándares svn).
Dino

6

Agregué un directorio a svn, luego eliminé accidentalmente la carpeta .svn dentro.

solía

svn delete --keep-local folderName

para arreglar mi problema


Esto funcionó para mí cuando mi IDE agregó un directorio, y luego moví un directorio del mismo nombre a su lugar antes de que se confirmara.
quellish

Probé esto, pero aún no pude cometer. He utilizado svn checkout --force [url]la que recrea la carpeta .svn
Lex

4

Acabo de hacer 'svn revert / blabla' y funcionó, la carpeta está de vuelta y puedo svn eliminarla


Gracias. Tuve este problema e intenté su sugerencia y funcionó.
Boric

3

El error "Falta el directorio 'blah / .svn' que contiene el área de administración de la copia de trabajo" ocurrió cuando intenté agregar el directorio al repositorio, pero no tenía suficientes privilegios del sistema de archivos para hacerlo. El directorio aún no estaba en el repositorio, pero afirmaba estar bajo control de versión después de la adición fallida.

Verificar una copia del directorio principal en otra ubicación y reemplazar la carpeta .svn en el directorio principal de la copia de trabajo me permitió agregar y confirmar el nuevo directorio con éxito (después de corregir los permisos del archivo, por supuesto).


2

Usamos maven y svn. Fue un registro erróneo del directorio de destino a SVN lo que causó este error. Eliminar eso solucionó todo, si esta pista ayuda a alguien.


¿Eliminar qué / de dónde exactamente?
DerMike

maven crea el directorio "objetivo", al construir. Por lo general, se supone que nadie debe registrarse en este. Un registro de inicio hizo un problema de permiso la próxima vez que finalizó el proceso, lo que creó este error. Eliminar el directorio "objetivo" de SVN resolvió el problema.
Madu

2

Traté svn rm --force /path/to/dirde nada pero terminé corriendo svn upy me lo arregló.


1

Recientemente tuve este error, cuando los archivos fueron excluidos por la configuración en mis globales SVN. El error fue especialmente desagradable ya que también eliminé los archivos directamente del repositorio, y esto significaba que las soluciones anteriores se negaban a funcionar. En este caso, eliminar manualmente el directorio .svn del directorio que eliminé de SVN me permitió ejecutar una actualización que luego me permitió confirmar.


1

Tuve el mismo problema cuando intentaba cambiar "C: \ supercarpeta"

Error de mensajes:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

Después de intentar hacer una "limpieza", recibí el siguiente error:

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

Solución:

  1. Eliminar la carpeta "subcarpeta"
  2. Limpia la carpeta "supercarpeta"
  3. Intente cambiar de nuevo la carpeta "supercarpeta"

Esto funcionó para mí. Avísame si también te funciona.


1

Tuve este error recientemente. Fue causado por la raíz que posee un par de archivos en el directorio que da este error.

Después de cambiar los permisos, todo funcionó como se esperaba.


1

No entendí mucho de tus publicaciones. Mi solucion es

  1. Corte la carpeta problemática y cópiela en alguna ubicación.
  2. Obtenga la solución de Subversion en otro directorio de trabajo (solo uno nuevo).
  3. Agregue su carpeta guardada a la nueva copia de trabajo y agréguela como proyecto existente (si es un proyecto como en mi caso).
  4. Cometer;

1

Tuve este problema Simplemente mueva blabla a otra ubicación temporalmente, dígale a svn que la revierta y luego muévala hacia atrás. Se trata como una nueva adición. ¡Sencillo!


1

El más simple que me ayudó:

rm -rf _dir_in_question_
svn up

Si tiene cambios en el directorio problemático, entonces esta no es una buena solución para usted.


1

Me encontré con este problema al reemplazar una biblioteca API de terceros con una versión más nueva, y ninguna de las soluciones aquí realmente funcionó para mí porque quería reemplazar la versión SVN con la versión local. Mi solución fue la siguiente:

1) Mueva la carpeta ofensiva a mi directorio de inicio, elimínela de SVN y confirme:

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2) Vuelva a colocar la carpeta, agréguela a SVN y confirme nuevamente:

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

Ligeramente irritante tener que cometer dos veces, pero parece haber funcionado bien.


En general, me gusta trabajar en código por separado de mi copia de trabajo del repositorio (IDE, compiladores, analizadores de errores, etc. no me gusta .svn, y no hay un comando 'TODOS IGNORE .SVNs EXCEPT SVN!' En Eclipse afaik); Esto significa que el proceso básico de confirmación de SVN para mí es: 1. Pagar la copia de trabajo del repositorio 2. Eliminar el directorio raíz del proyecto Tengo una actualización para 3. Copiar y pegar el directorio del proyecto actualizado en el directorio principal del proyecto en la copia de trabajo 4. svn agregue --force <projname> 5. commit. Esto generalmente funciona, pero ocasionalmente puede arrojar el error del OP. La solución de Jamie Brown funcionó en mi caso
CCJ

0

En caso de que alguien quiera otra solución:

  1. Registre su nueva carpeta como "foldername2"
  2. Vaya al navegador de repositorios Tortise SVN
  3. Cambie el nombre de "foldername2" a "foldername"
  4. En Windows Explorer haga una actualización

Espero que ayude a alguien.

-Ev


Una solución única de Windows.
Raptor

0

Para mí, el mismo problema ocurrió cuando ambos:

  • eliminado ( --force) un archivo .map
  • agregado * .map a svn:ignoreviasvn propedit svn:ignore .

Mi solución fue:

  1. deshacer cambios a la propiedad
  2. confirmar cambios en los archivos
  3. verifique una copia nueva del repositorio (¡ay!)
  4. cambiar la propiedad y comprometerse

0

Tuve este problema cuando intentaba agregar un directorio a svn. Lo resolví yendo al navegador de repositorios. Haga clic derecho en la ventana izquierda, elija agregar carpeta y agregue el directorio directamente en el navegador de repositorios.

Luego eliminé el directorio localmente (después de la copia de seguridad, por supuesto), hice una limpieza y una actualización de svn y todo volvió a funcionar.


Podría agregar que esto se agrega a mi archivo "svn apesta".
Mota

0

En primer lugar, verifique el proyecto en su sistema en una carpeta. Luego, elimine la carpeta .svn del proyecto en conflicto y copie la carpeta .svn de la nueva carpeta de pago y péguela en su carpeta de copia de trabajo. Entonces el problema está resuelto.


0

Una tarea común que experimenté fue tener que tomar un directorio de repositorio en la preparación y copiarlo en otro repositorio, ambos bajo SVN y ambos con el mismo nombre. La forma en que funcionó para mí fue la siguiente:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.