Está en la página 1de 3

HOWTO - Ignorar archivos o directorios de

un repositorio SVN

Pablo Nicolás Diaz Bilotto.

Introducción
Este documento indica como configurar un cliente de SVN para que ignore el manejo un
conjunto de archivos del sistema de versionado, evitando su aparición en los commits.

Para evitar que el cliente de SVN versione un conjunto de archivos, hay dos opciones de
configuración, una es seteando la propiedad svn:ignore a los archivos o directorios que
se desea ignorar; y la otra es agregando el conjunto de archivos a la variable global-
ignore del archivo de configuración del cliente, cabe aclarar que una de las opciones
afecta a TODOS los repositorios de los cuales se tiene copia local y la otra opción
solamente afecta a los archivos de un cierto repositorio en particular.

Usando propiedades
Para utilizar la propiedad svn:ignore, se debe ejecutar el siguiente comando

$ svn propset svn:ignore PROPERTY_VALUE PATH [PATH ...]

por ejemplo, ignorar los archivos .classpath del directorio jose/, el comando sería :

$ svn propset svn:ignore .classpath jose/

también es posible agregar varios archivos/directorios a la propiedad, por ejemplo

$ svn propset svn:ignore '.classpath .settings' jose/

o usar un archivo como fuente al valor de la propiedad, por ejemplo, se desea ignorar
los archivos del ejemplo anterior, pero usando el archivo ignored.txt, para lo cual, el
archivo deberá tener el nombre de los dos archivos previamente presentados y de a una
linea por archivo; Entonces, cuando se ejecute el comando cat, se deberá tener la
siguiente salida :

$ cat ignored.txt
.settings
.classpath
$

1
y para aplicar la propiedad, ejecutamos

$ svn propset svn:ignore -F ignored.txt jose/

Para chequear que hemos hecho bien nuestro trabajo de ignorar los archivos, lo haremos
utilizando el comando status y pasando el flag --no-ignore como parametro, con lo cual
deberíamos ver el estado de los archivos ignorados, supongamos que se ha ejecutado el
comando propset sobre el directorio jose/ y que los archivos .classpath y .settings fueron
pasados como paramétro, entonces a la salida del comando deberían aparecer listados

$ svn status --no-ignore


...
I jose/.classpath
...
I jose/.settings
...

cabe aclarar que el valor de la propiedad svn:ignore tambien soporta la expansión de


pathnames, por ejemplo el siguiente comando permitiria ignorar todos los JAR del
directorio jose/

$ svn propset svn:ignore '*.jar' jose/

Notese que con las comillas se evita la expansión del cuarto parametro.

Usando el archivo de configuración


La otra opción es poner los archivos en la entrada global_ignore en el archivo de
configuración, el cual esta localizado usualmente en ~/.subversion/config; El valor de
esta propiedad tambien soporta el uso de wilcards, de la misma manera que se mostro
en el apartado anterior. Un ejemplo de como debería ser el valor de esta variable seria el
siguiente

$ grep global-ignores ~/.subversion/config


...
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo
...

con lo cual se ignoran los tipos de archivos mas comunes dentro de un proyecto de
desarrollo de software, como son los archivos objeto, las librerías dinámicas, el directorio
usado por libtools y los archivos compilados de python.

Vale aclarar que es posible configurar a svn para que active la funcionalidad conocida
como autoprop, la cual permite la asignación automática de propiedades, la cual esta
fuera del alcance de este documento.

Valores recomendados para el projecto


Como posibles valores se pueden listar los siguientes

target
*.jar
*.dll
*.exe

2
Thumbs.db
.settings
.classpath
libs
lib
*.o
*.so
*.so.[0-9]*

los cuales cubren a los directorios 'target' generados por maven, los archivos JAR, los
cuales se recomienda agregar como dependencias en los archivos pom.xml, los archivos
DLL y Thumbs.db, usualmente presentes en las plataformas de Microsoft, los archivos
.classpath y .settings generados por eclipse, y los archivos *.so y sus variantes, los
cuales aparecen usualmente en plataformas *nix.

En caso de que los archivos JPEG no sean necesarios para el funcionamiento de los
programas, los mismos podrían incluirse las siguientes entradas :

*.jpg
*.jpeg

Cabe aclarar que la lista no es extensiva, ya que la variedad de plataformas y


herramientas usadas por cada integrante de la organización pueden ser distintas según
los requerimientos que implementen y por consiguiente imposible de listar en forma
extensiva.

Índice
HOWTO - Ignorar archivos ............................................................. 0
o directorios de un repositorio SVN................................................ 0
Introducción .................................................................................. 1
Usando propiedades........................................................................ 1
Usando el archivo de configuración ................................................... 2
Valores recomendados para el projecto ............................................. 2
Índice ........................................................................................... 3

También podría gustarte