2009-05-20 10 views
126

¿Qué diablos significa "obstaculizado" cuando intentas ingresar a Subversion? Veo dos carpetas en rojo con el estado de texto "obstruido". No veo lo que esto significa en ningún lugar de los documentos.Carpetas obstruidas en Subversion

Cuando pruebo el comando cleanup, obtengo "el nombre de la carpeta no es un directorio de trabajo". Esta es una carpeta que acabo de crear en VS, y cuando intento agregarla a Subversion, me da ese error. Todas las demás carpetas están bien.

+0

se obtiene el 'obstruida' en la operación de suma? –

Respuesta

106

se produce cuando ha eliminado o movido los subdirectorios .svn (sin pasar por los comandos SVN), por lo que SVN tiene una vista dañada de la copia de trabajo.

Primero pruebe una limpieza, y si eso no lo resuelve, invierta (o actualice) el directorio para restaurar las carpetas .svn del subdirectorio.

+1

raro. Terminé teniendo que hacer un pago de esta carpeta. La carpeta ya existía en el repositorio. Luego lo eliminé sin usar el comando svn delete. Al revisarlo y confirmarlo, se resuelve el problema. Luego en otro archivo .css que NO cambié el nombre, eliminé y solo lo he estado editando, tuve que hacer una actualización de svn porque estaba obteniendo un problema raro con eso (mensaje diferente). – PositiveGuy

+1

Dios mío, estaba tratando de comprometerme con una copia de este proyecto que tenía en mi disco externo, no con la copia de trabajo de mi disco local. Duh. – PositiveGuy

+8

Esto ocurre a menudo si mueve un directorio de un lugar a otro y no utiliza el comando de movimiento SVN. El archivo oculto .svn se mueve junto con él, pero no se actualiza. Eliminar los archivos .svn soluciona el problema. – user85259

1

Esto significa que, por algún motivo, se ha producido un conflicto durante la operación. Verifique si hay un archivo o una carpeta no versionada con el mismo nombre que el versionado.

(Parafraseado desde el archivo de ayuda de cliente Tortoise SVN)

9

Sin saber lo que causas de esto, la solución puede ser para exportar la copia de trabajo (toda la caja que tiene localmente) a otro lugar.

Si está utilizando tortoisesvn, tiene la opción de "exportar archivos sin versión", pero creo que si lo hace desde la línea de comandos, solo exporta archivos versionados, por lo que puede tener una tarea un poco laboriosa copiando -versión de archivos manualmente

Una vez hecho esto, revise una copia de trabajo limpia y luego suelte la copia de seguridad exportada que tiene sobre la parte superior. Es muy importante que la copia de seguridad no tenga carpetas .svn.

He visto estos errores antes cuando las personas han sacado copias de trabajo dentro de otras copias de trabajo o cualquier otra cosa que dañe las entradas .svn.

+0

Eso lo solucionó para mí. ¡Gracias! – Patrick

+11

Creo que la solución es pegar SVN en el contenedor y cambiar a un sistema de control de versiones que no sea basura. Lo siento ... solo estoy frustrado. –

4

Si está en un sistema * nix, asegúrese de no crear un archivo, agréguelo a SVN, elimínelo y sustitúyalo por una carpeta con el mismo nombre. No ayuda OP, pero con suerte le ahorrará a alguien un montón de estrés.

0

Me encontré con este problema al pegar en la carpeta con subdirectorios en mi copia de trabajo usando mi cliente FTP - Sabía que lo arruiné tan pronto como presioné el botón de transferencia ... los peligros de trabajar demasiado tarde.

Probé todas las sugerencias anteriores y otras que se encuentran en línea fueron en vano. Cada opción produjo el error de que mi directorio estaba bloqueado y la operación no se pudo realizar.

Ingresé a mi copia de Time Machine, restauré el directorio y estaba listo para funcionar. Limpié la copia de trabajo como precaución, actualicé mis archivos correctamente y volví a estar en el negocio.

5

tenían el mismo problema y se fija de esta manera:

  • cambió el nombre del obstruida dir
  • creado el directorio con su nombre original en SVN (por ejemplo,svn mkdir)
  • actualizan la carpeta principal, por lo que el directorio recién creada aparece en mi copia de trabajo
  • copiar los archivos de la obstrucción a la dir de nueva creación y las
1

Nada funcionó para mí, así que Commited hemos puesto en práctica lo siguiente:

  • exportada con los archivos sin versión en una nueva ubicación
  • renombró la carpeta existente
  • movimiento d la carpeta de la ubicación de exportación en el proyecto
  • renombró la nueva carpeta
  • complemento, cometen
  • eliminado la carpeta antigua, rebautizado
  • renombró la nueva carpeta
  • cometer
0

Nosotros A menudo tengo varias ramas en movimiento al mismo tiempo, para ahorrarme el cambio o el desorden con la configuración de IIS. Compruebo cada ramificación en una carpeta separada. Luego utilizo el enlace de directorio para conectar esas carpetas a la ruta principal configurada en IIS.

Para mí, el directorio vinculado siempre tiene un signo de exclamación amarillo y está marcado como obstruido. Creo que esto se debe a que fue creado/movido técnicamente fuera de SVN.

1

Existen diferentes variaciones de escenario que pueden causar esta situación. Aquí hay un ejemplo:

¡Terminé con el! marca en un directorio que pasó a denominarse a partir www a www_a sin utilizar comando 'svn de cambio de nombre':

  1. Cambie el nombre del directorio actual que lleva el nombre original, por ejemplo, para www_b
  2. www_a Cambiar nombre y volver a www
  3. Asegúrese de hacer 'svn update' o 'svn revert' dentro del directorio www
  4. eliminar la puesta al día directorio www sin usar 'svn delete'
  5. Ir al directorio padre y el problema de actualización svn' '
  6. Esto restaurará el directorio www originales
  7. uso
  8. Esta vez 'svn renombrar' para cambiar el nombre www a www_a
  9. www_b Cambiar nombre y volver a www
  10. Uso 'svn add' para añadirlo al repositorio

Debería obtener un directorio de trabajo svn correcto en este punto. Y aprenda una o dos cosas sobre cómo resolver la confusión del directorio svn.

0

Obtengo este estado "obstruido" en los directorios cuando realizo actualizaciones a un CMS (WordPress o Drupal) a través de la interfaz web; la aplicación no sabe que su código es realmente una copia de trabajo de subversión, por lo que al actualizar un complemento elimina el directorio de ese complemento (incluido el directorio .svn) y lo coloca en un nuevo directorio de la nueva versión del complemento.

Para obtener ese .svn dir hacia atrás, desde el directorio que contiene el directorio obstruido. Hago un pago con --force. Por ejemplo, si plugin_dir está marcado "~", desde su directorio padre corro:

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir 

Los archivos que ya no se quedan solos y marcados "E" de la salida de la orden de pago (marcado como "M" cuando ejecuto svn status).

A veces tengo que volver y agregar cualquier archivo que fuera nuevo con la actualización; o eliminar archivos que deberían eliminarse como parte de la actualización, ya que reaparecieron cuando hice el pago. Creo que estos están marcados como "A" en el pago, pero un svn status no los mencionará.

0

Me encontré con esto en Eclipse, donde algunos archivos fueron marcados con un signo de exclamación rojo. El problema era una carpeta .svn perdida en el directorio fuente. Eliminé la carpeta .svn, eclipse actualizado y pude verificar los archivos.

+0

yup Tuve que eliminar mi carpeta, estaba corrupta ... la carpeta .svn. – PositiveGuy

0

Esto también puede suceder cuando actualiza su subversión a una versión que XCode no admite.

1

Se ha enfrentado a este problema en una máquina con Windows.

Había revisado el directorio antes de ver el proyecto completo al que pertenecía. Causó el problema 'obstruido' para mí.

Simplemente eliminé esa carpeta y ejecuté una actualización desde la raíz (de esa carpeta). Funcionó bien

Los comandos como la limpieza, etc. no funcionó para mí.

Algunos palabra de precaución:

  1. Esto es costoso si la carpeta es grande.
  2. Te hará perder todos tus cambios, si los hay.

Todo lo mejor.

0

Aquí es el más sencillo (y más segura) manera que he encontrado para resolver esto:

  1. renombrar temporalmente el archivo o directorio infractor (o un directorio padre) que está obstruido (por ejemplo, añadir ".backup") .
  2. Elimine cualquier directorio .svn dentro del directorio renombrado (si corresponde).
  3. svn revert el objeto renombrado (y ahora falta) del paso 1.
  4. svn delete el objeto revertido.
  5. Vuelva a cambiar el nombre de la copia de seguridad del paso 1 a su nombre original.
  6. Agregue y vuelva a registrar el objeto renombrado en svn como un nuevo objeto.
0

Esto se me ocurrió cuando reemplacé un archivo con una carpeta, que tenía exactamente el mismo nombre. Se solucionó al eliminar el archivo anterior, confirmar y luego agregar el nuevo. Un poco hacky, pero funcionó para mí :)

1

También he visto esto en Windows cuando he creado un enlace simbólico a un directorio de repositorio; en este caso, la raíz del repositorio se ve como "obstruida". Sin embargo, esto no parece tener ningún efecto.

Pasos para reproducir:

  1. Pedido tu repositorio

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir 
    
  2. Comprobar que el directorio está bien

    cd plugin_dir 
    svn st -u 
    

    de salida debe ser

    Status against revision: 1234 
    
  3. crea el enlace simbólico (que muestra el problema)

    cd .. 
    mklink /d link_dir plugin_dir 
    cd link_dir 
    svn st -u 
    

    salida será

    ~   1234 . 
    Status against revision: 1234