SVN Externals : Qué son y sugerencia de uso

A la mayoría de los que trabajéis/halláis trabajado a lo largo de vuestra vida con Sistemas de Control de Versiones (CVS en inglés de Control Version System) y más concretamente con Subversion (SVN) os sonarán estas palabras, y seguramente incluso indirectamente habréis usado esta funcionalidad de SVN.

A continuación os ofrezco mi particular punto de vista sobre ellos y una sugerencia de uso.

A mi parecer, el uso más correcto de esta funcionalidad, es dentro de un caso parecido al siguiente. Tenemos un repositorio de código propio dónde estamos programando… de repente se dan algunas de estas situaciones:

  • Acabamos de crear una buena abstracción de código para manejar algún tipo de componente, que es lo suficientemente como para poder ser reutilizada en un futuro no demasiado lejano.
  • Nuestro código tiene dependencias a nivel de código del código de otros proyectos/repositorios SVN.
  • Simplemente somos ordenados y sí una cosa hace palomitas, es blanco y es cuadrado, estamos delante del microondas, volvamos al ordenador y queremos dejar para nuestra posteridad ese conjunto de utilidades que acabamos de programar.

Evidentemente como todo en esta vida, estaría bien poderlo preveer antes de encontrarte con la situación de que tienes código en un repositorio y lo quieres mover a otro, pero a la vez luego quieres que ese código siga estando en tu repositorio.

Para esto y para algo más deben estar los externals.

Su utilización es bastante sencilla, si podemos disponer del caso de un repositorio vacío o una carpeta del repositorio vacía donde hacer el checkout del repositorio externo pues genial, si no deberemos guardarnos una copia de seguridad de rigor de los archivos, borrarlos del repositorio activo, hacer commit de los cambios y más tarde configurar el external.

Configurar un external es tan sencillo cómo introducir este comando en la carpeta donde queremos tenerlo:

svn propedit svn:externals .

Dónde nos aparece una pantalla para escribir y hemos de escribir, obviamente, una pareja de valores por cada repositorio externo que queremos añadir, la pareja está compuesta por la URL de repositorio externo y la carpeta del repositorio actual dónde se hará el checkout. Sirva como ejemplo:

https://svn.superservidorsvn.com/proyecto/trunk/src carpetita

Entonces ya lo tenemos casi todo listo, falta que hagamos commit de los cambios que acabamos de hacer, por qué sí! hemos hecho cambios… después del commit bastará con hacer un update para obtener la versión adecuada (según la url que le hemos peusto) del repositorio externo.

Espero que sea de ayuda!

Leave a Reply

Your email address will not be published. Required fields are marked *