Agregar repositorios externos

Cuando trabajamos con sistemas un poco mas grande que lo normal puede ser que usemos librerias o partes de otros sistemas. Esas otras partes pueden ya estar dentro de un control de versiones y no necesitamos agregarlas dentro de nuestro repositorio. Pero si necesitamos enlazarlas.

La idea es simple, yo tengo un sistema conjunto con otro proyecto donde trabajan otras personas, pero tambien necesito subir y obtener las actualizaciones.

El ejemplo mas facil es usar la libreria Zend Framework, la forma comun es bajarse Zend Framework, y copiarlo dentro de nuestro proyecto, y agregarlo al control de versiones, pero ZF ya tiene su propio repositorio, al cual nosotros podemos acceder, y si agregamos ese repositorio a nuestro proyecto de forma externa, cada vez que hagamos un svn up, va a controlar si en el repositorio de ZF se genero algun cambio, y en ese caso, nos va a traer los cambios nuevos, solo haciendo svn up, dentro de nuestro repositorio.

Por ejemplo, yo tengo un repositorio con librerias propias, en http://pablo-morales.com/svn/PM/trunk, y ademas tengo la lib de ZF en http://framework.zend.com/svn/framework/standard/trunk/library/Zend, y un proyecto en el que estoy trabajando llamado svntest, y lo tengo en http://pablo-morales.com/svn/svntest/trunk

Cuando hago un checkout del repositorio svntest, me crea una carpeta llamada library, esta carpeta esta vacia. Aca voy a poner mis repositorios externos y lo voy a hacer de la siguiente forma

Creo un archivo llamado externals.

$ vi externals

Dentro este archivo, voy a ingresar 2 lineas con dos columnas, la primera va a tener el nombre de la carpeta que quiero que se guarde los archivos, y la segunda la url del repositorio.

Siguiendo con el ejemplo anterior, la forma correcta de generar nuestro archivo externals seria la siguiente.

El proximo paso es decirle que traiga los repositorios externos que tengo en el archivo externals

$ svn propset svn:externals -F externals .

si este comando nos devuelve property ‘svn:externals’ set on ‘externals’ es que todo salio bien.

Y por ultimo paso  hacemos

$ svn up

Los repositorios externos los marca con una X

Ignorando archivos del control de versiones

Si queremos que un grupo de archivos de nuestro proyecto no sean incluidos dentro del control de versiones. Por ejemplo las imagenes, los swf, o cualquier otro archivo que no va a sufrir modificaciones podemos usar las property de Subversion para ignorar estos archivos. Por ejemplo si queremos que todos los archivos .jpg de un directorio sean ignorados.
$ svn propset svn:ignore “*.jpg” /path_de_la_carpeta

Tambien podemos hacer
$ svn propedit svn:ignore -F .svnignore

Y dentro del archivo .svnignore el listado de archivos a ignorar.

Leave a Reply