2011-03-15 9 views
13

Tenía una carpeta que era parte de un proyecto en svn, que se ha movido a una carpeta/depósito diferente para ser compartido entre proyectos. quiero reemplazar este directorio en el SVN w/un enlace simbólico, pero cuando trato de hacerlo, me sale este mensaje:cómo cambiar la carpeta a enlace simbólico en svn

svn: Entry '/project/wwwdocs/js' has unexpectedly changed special status 

cómo puedo reemplazar este directorio con un enlace simbólico?

Respuesta

15

Para que la subversión recoja los cambios y detecte el enlace simbólico, primero debe eliminar el archivo original, confirmar la eliminación y luego actualizar su repositorio. Después de eso, debería poder agregar un enlace simbólico sin problemas.

EDITAR: Esta pregunta parece haber sido formulada antes y recibió comentarios decentes. Verifique: Commit symlink into subversion

+0

¿Qué sucede con el archivo eliminado en versiones anteriores en este caso? ¿Se elimina también allí? – wander95

+0

Ha pasado mucho tiempo desde que utilicé SVN, así que honestamente no tengo ni idea. –

17

Lo siguiente establece la propiedad especial en cada enlace simbólico y lo elimina en archivos/directorios normales. Hay varias maneras de determinar los archivos para operar.

svn_special_files=`svn propget --recursive svn:special | cut -d' ' -f1` 
for i in `find . | grep -v "\.svn" | cut -d'/' -f2-`; do 
    is_special=false 
    for j in $svn_special_files; do 
    if [ "$j" = "$i" ]; then 
     is_special=true; 
     break; 
    fi 
    done 
    if [ -h $i ] ; then 
    ! $is_special && svn propset svn:special '*' $i 
    else 
    $is_special && svn propdel svn:special $i 
    fi 
done 
+0

¡Una rutina muy útil, y nunca supe que usas! como eso. (+1) – Orwellophile

+0

¡Muchas gracias, script muy útil! – Setomidor

+0

Explicación de la secuencia de comandos: Al configurar la propiedad svn: especial correctamente, puede confirmar el cambio de archivo a enlace simbólico o de enlace simbólico a archivo de una sola vez. La secuencia de comandos establece automáticamente la propiedad svn: especial correcta para todos los archivos en su repositorio. – phobic

1

Puede incluso intentar una respuesta sencilla de eliminar archivo culpable -

svn remove --force <file> 

Esto es especialmente útil para los usuarios de Windows a través del CLI SVN.

0

Puede ejecutar command blow para solucionar este problema.

svn propset svn:special on /project/wwwdocs/js 
Cuestiones relacionadas