Suprime el error "no existe el file" de svn remove

En mi proyecto, tengo una carpeta con resources que no quiero agregar o eliminar manualmente al repository cuando los agrego o elimino en mi copy de trabajo.

Escribí un script bash simple que comtesting el svn state y llama a svn add para los files marcados con un ? y svn remove para files con a ! . Agregué este script bash a mi script de compilation. El problema es que svn remove devuelve un error cuando se lo llama con un file que ya no existe. Esto da como resultado que mi secuencia de commands de compilation se anule y devuelve un error también.

¿Hay alguna forma de suprimir estos errores? Intenté --force y --quiet . No ayudó.

Ejemplo:

 MacBook-Pro:proj Bill$ echo "test" > foo.bar MacBook-Pro:proj Bill$ svn st ? foo.bar MacBook-Pro:proj Bill$ svn add foo.bar A foo.bar MacBook-Pro:proj Bill$ rm foo.bar MacBook-Pro:proj Bill$ svn st ! foo.bar MacBook-Pro:proj Bill$ svn rm foo.bar D foo.bar svn: 'foo.bar' does not exist 

Hay (al less) dos casos diferentes en los que svn stat imprime una línea con un signo de exclamación:

  1. El file existe en el repository, no existe en el directory de trabajo y no se usó svn rm .
  2. El file no existe en el repository, se utilizó svn add en el file y el file ya no existe en el directory de trabajo.

svn rm funciona en el primer caso, pero sale con un error en el segundo caso. Hay varias maneras de resolver este problema, según lo que desee lograr:

  • Si desea eliminar el file en ambos casos, haga lo siguiente:
    touch "$filename" ; svn rm --force "$filename" touch "$filename" ; svn rm --force "$filename" .
  • Si desea eliminar el file solo en el segundo caso y revertir en el primer caso, haga lo siguiente:
    svn revert "$filename" .

Entonces, para responder mi pregunta, usar --keep-local solucionó el problema.

Aquí está el guión que terminé usando. Esto verificará los files marcados como no versionados ( ? ) Y llamará a svn add para ellos. Luego verifica los files marcados como faltantes ( ! ) Y llama a svn rm por ellos.

 svn st "$Resources" | grep '^?' | sed 's_^? \(.*\)$_svn add "\1"_g' | sh svn st "$Resources" | grep '^!' | sed 's_^! \(.*\)$_svn rm --keep-local "\1"_g' | sh