Ignorar ficheros y directorios en subversion

Es bastante sencillo cuando trabajamos con subversion u otros tipos de repositorios incluir en nuestra cópia de trabajo ficheros que no debemos subir al repositorio, como compilaciones, ficheros de prueba, ficheros del sistema operativo, logs, etc. Para que subversión los ignore tenemos diversos métodos.

Todos estos métodos modifican la propiedad svn:ignore

1) Editar directamente la propiedad para un directorio en concreto


$ svn propedit svn:ignore ./ruta_ficheros_a_ignorar

A continuación podemos indicar los ficheros a ignorar dentro de la ruta especificada permitiéndose el comodín ‘*’. Así para ignorar todos los ficheros dentro del directorio basta con indicar


\*

Puedes crear una lista de ficheros, uno por linea, por ejemplo:


\*.out
data.log
\*.tmp
test_\*

2) Otro método consistiría en editar el archivo global ~/.subversion/config

Busca la sección [miscellany] dentro de este fichero y cambia la propiedad global-ignores para ignorar los archivos que no deseas subir al repositorio. Hay que emplear un espacio como separador entre “ficheros” en lugar de poner uno por línea como hacíamos antes. Así:


global-ignores = \*.out data.log \*.tmp test_\*

Esto ignorará todos los ficheros que sigan este patrón en todos los repositorios que emplees en tu máquina local

3) Un último método sería empleando el comando propset de subversion


$ svn propset svn:ignore \*.tmp .

El punto final indicaría que es el directorio actual en donde deben ignorarse los fichero son extensión tmp

Podemos especificar un fichero donde tengamos todas las reglas para ignorar ficheros con el modificador -F, así:


svn propset svn:ignore -F ignore.txt .

Recuerda además que si empleas propset y propedit debes ejecutar un commit para que todo el mundo ignore estos ficheros. Ten esto en cuenta a la hora de definir lo que no quieres versionar.. svn:ignore es una propiedad; metadatos en el repositorio que también son versionados. Cada objeto dentro de subversion (ficheros, directorios, enlaces etc) puede tener esta u otras propiedades. Para saber que propiedades tiene un objeto en concreto en nuestro repositorio o copia de trabajo basta ejecutar:


$ svn proplist /ruta_objeto