estructura - merge svn
Carpetas obstruidas en Subversion (16)
¿Qué diablos significa "obstruido" 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.
Cuando intento el comando de 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.
A menudo, tenemos varias sucursales en movimiento al mismo tiempo, para ahorrarme el cambio o la confusión con la configuración de IIS. Compruebo cada rama en una carpeta separada. Luego utilizo el enlace de directorio para conectar esas carpetas a la ruta principal configurada en IIS.
Entonces, para mí, el directorio vinculado siempre tiene una exclamación amarilla y está marcado como obstruido. Creo que esto se debe a que fue creado / movido técnicamente fuera de SVN.
Enfrentado con este problema en una máquina con Windows.
Revisé 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
Comandos como la limpieza, etc. no funcionó para mí.
Algunas palabras de advertencia:
- Esto es costoso si la carpeta es grande.
- Hará que pierdas todos tus cambios si los hay.
Todo lo mejor.
Esta es la forma más sencilla (y más segura) que he encontrado para resolver esto:
- Cambie temporalmente el nombre del archivo o directorio ofensivo (o un directorio principal) que esté obstruido (por ejemplo, agregue ".backup").
- Elimine cualquier directorio
.svn
dentro del directorio renombrado (si corresponde). -
svn revert
el objeto renombrado (y ahora falta) del paso 1. -
svn delete
el objeto revertido. - Vuelva a cambiar el nombre de la copia de seguridad desde el paso 1 a su nombre original.
- Agregue y registre el objeto renombrado en svn como un nuevo objeto.
Esto se me ocurrió cuando reemplacé un archivo con una carpeta, que tenía exactamente el mismo nombre. Se soluciona borrando el archivo anterior, confirma y luego agrega el nuevo. Un poco hacky, pero funcionó para mí :)
Esto significa que, por alguna razón, se ha producido un conflicto durante la operación. Verifique si hay un archivo o carpeta no versionado con el mismo nombre que el versionado.
(Parafraseado del archivo de ayuda del cliente de Tortoise SVN)
Esto también puede suceder cuando actualiza su subversión a una versión que XCode no admite.
Hay diferentes variaciones de escenario que pueden causar esta situación. Aquí hay un ejemplo:
Terminé con el! marque en un directorio que fue renombrado de www a www_a sin usar el comando ''svn rename'':
- Cambie el nombre del directorio actual que lleva el nombre original, por ejemplo, a www_b
- Cambie el nombre de www_a a www
- Asegúrese de hacer ''svn update'' o ''svn revert'' dentro del directorio www
- Elimine el directorio www actualizado sin usar ''svn delete''
- Vaya al directorio padre y emita ''svn update''
- Esto restaurará el directorio original de www
- Esta vez usa ''svn rename'' para cambiar el nombre de www a www_a
- Cambie el nombre de www_b a www
- Use ''svn add'' para agregarlo 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.
Me encontré con este problema al pegar en la carpeta con subdirectorios en mi copia de trabajo utilizando 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 encontradas en línea fueron en vano. Cada opción produjo el error de que mi directorio estaba bloqueado y no se pudo realizar la operación.
Ingresé a mi copia de Time Machine, restauré el directorio y pude continuar. Limpié la copia de trabajo como precaución, actualicé mis archivos correctamente y volví a estar en el negocio.
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.
Nada funcionó para mí, así que hice lo siguiente:
- exportado con los archivos no versionados en una nueva ubicación
- renombrado la carpeta existente
- movió la carpeta desde la ubicación de exportación en el proyecto
- renombrado la nueva carpeta
- agregar, comprometer
- eliminó la carpeta vieja y renombrada
- renombrado la nueva carpeta
- cometer
Obtuve 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 en realidad una copia de trabajo de subversión, por lo que al actualizar un complemento elimina dicho complemento directorio (incluido el directorio .svn
) y se coloca en un nuevo directorio de la nueva versión del complemento.
Para recuperar ese directorio .svn
, desde el directorio que contiene el directorio obstruido. Hago un pago y envío con --force
. Por ejemplo, si plugin_dir
está marcado como "~", desde su directorio principal ejecuto:
svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
Cualquier archivo que ya exista se deja solo y se marca "E" en el resultado del comando de finalización (marcado como "M" cuando ejecuto el svn status
).
A veces tengo que volver atrás y agregar cualquier archivo que sea 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
posterior no los mencionará.
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.
Sin saber qué causa esto, la solución puede ser exportar la copia de trabajo (todo el proceso de pago 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 laboriosa al copiar archivos sin versión 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 comprobado copias de trabajo dentro de otras copias de trabajo o cualquier otra cosa que corrompe las entradas .svn.
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:
Pagar su repo
svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
Verifique que su directorio esté bien
cd plugin_dir svn st -u
La salida debe ser
Status against revision: 1234
Crear el enlace simbólico (que muestra el problema)
cd .. mklink /d link_dir plugin_dir cd link_dir svn st -u
La salida será
~ 1234 . Status against revision: 1234
Tuve el mismo problema y lo solucioné así:
- renombrado el directorio obstruido
- creó el directorio con su nombre original en SVN (por ejemplo, svn mkdir)
- actualicé la carpeta padre, por lo que el directorio recién creado aparece en mi copia de trabajo
- Copié los archivos del obstruido al dir recién creado y los envié
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.
Intente una limpieza primero, y si eso no lo resuelve, revertir (o actualizar) el directorio para restaurar las carpetas .svn del subdirectorio.