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 globalignore 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
3