Ahora me he encontrado el problema, tras haber importado un árbol completo de directorios, que necesito que ciertos ficheros y ciertos directorios no estén bajo el control de versiones. ¿Cómo se puede realizar esta exclusión?. Pues hay que seguir varios pasos:
- Si los ficheros están bajo el control de versiones, eliminar del repositorio los mismos.
Por ejemplo, si estamos en la raíz de nuestro proyecto, y quisiéramos eliminar el directorio build:svn delete build
O por ejemplo, si queremos que no estén bajo el control de versiones todos los ficheros intermedios del proceso de compilación, que son de la forma moc_*.cpp:
svn commitsvn delete moc_*.cpp
svn commit - Añadir una propiedad a los directorios donde queremos que se ignores los ficheros. Esta propiedad es svn:ignore. Así por ejemplo, para ignorar en el directorio raíz todos los ficheros cuyo nombre coincidan con el patrón moc_*.cpp:
svn propset svn:ignore moc_\*.cpp .
Ojo en este caso: la contrabarra, \, se utiliza para escapar el asterisco del shell y el . es necesario para indicar que se va a modificar las propiedades del directorio actual, que es donde queremos ignorar
svn commit - Como puede verse, la propiedad se almacena en el servidor, por lo cual es imprescindible hacer un commit de los cambios para que estos queden reflejados en el repositorio.
¿Qué pasaría si quisiéramos ignorar varios archivos o varios subdirectorios?. En este caso, cada uno de los patrones de archivos o subdirectorios debe de estar separado por un carácter de nueva línea. Hay varias maneras de conseguir este efecto:
- Usar un fichero y la opción -F del svn. Supongamos que queremos ignorar todos los ficheros contenidos en los directorios build y Debug. Para ello creamos un fichero que por simplicidad vamos a llamar ignore.txt, donde cada línea corresponde a cada uno de los directorios que queremos ignorar:
svn propset svn:ignore -F ignore.txt .
svn commit - Otra opción es usar las comillas e ir introduciendo cada patrón de ficheros en una nueva línea. Para ignorar los mismos directorios que en el caso anterior:
svn propset svn:ignore 'build[ENTER]
Debug[ENTER]
' .
svn commit
Para obtener el listado de ficheros que está ignorando actualmete svn se consulta el estado y se pasa la opción --no-ignore:
svn status --no-ignore
También existe la posibilidad de hacer que subversion ignore los ficheros a nivel global. Para ello debe de editarse el fichero de configuración, config, y modificar en la sección miscellany, el parámetro global-ignores. Por defecto subversion ignora los ficheros con las cuyos nombres coincidan con los patrones*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store
Referencias
Technorati Tags: svn
No hay comentarios:
Publicar un comentario