November 8th, 2008 Category: Programacion
4 Comments »

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.


Invitame una Cerverza


Comentar


4 Responses

wilber 2009-02-19 19:47:00
Hola, Muchas gracias por el material, me esta siendo de mucha ayuda. pero tengo una duda extraer archivos externos lo estas haciendo bajo alguna distribucion de linux con el terminal no es sierto??.
en el caso de windows como seria¿??????.

Gracias

Disculpa por la molestia!!

wilber!!

Neozeratul 2009-04-21 12:02:11
Si por favor indicanos como seria sobre windows!!!
Se te agradece la iniciativa de inculcarnos el conocimiento sobre este Framework.
Gracias

Pablo Morales 2009-04-21 16:03:59
@wilber y Neozertul: Se que para ignorar archivos lo tienen en el tortoise una opcion click derecho sobre el file, y sobre los repos externos no sabria decirles pero deberia haber una opcion con el tortoise tambien,


Saludos

elber 2010-09-15 14:01:59
Hola Pablo. ¿Podrías explicarme la diferencia entre crear en mi proyecto un directorio con externals o crear por otro lado un directorio normal y bajarme en ese directorio una cierta revisión para trabajar con ella?

No sé si me explico: diferencia entre externals y una carpeta normal con cierta revisión. Por ejemplo, mi proyecto utiliza cierta librería, entonces para trabajar con los fuentes de esa librería puedo hacerlo con externals o con una carpeta normal en la que me bajo la ultima revisión... no entiendo la diferencia entre ambas cosas.

Muchas gracias.