Importando datos en un repositorio

Importar

Si está importando en un repositorio que ya tiene algunos proyectos, entonces la estructura del repositorio ya estará decidida. Si está importando datos a un nuevo repositorio entonces merece la pena tomar el tiempo para pensar en cómo debería organizarse. Lea “Organización del repositorio” para más información.

Esta sección describe el comando Importar de Subversion, que se diseñó para importar una estructura de carpetas en el repositorio de un sólo paso. Aunque realiza su cometido, tiene muchos inconvenientes:

  • No hay forma de seleccionar los archivos y carpetas a incluir, salvo si utiliza la configuración del patrón global de ignorar.

  • La carpeta importada no se convierte en una copia de trabajo. Tiene que hacer una obtención para copiar los archivos de nuevo desde el servidor.

  • Es fácil importar en un nivel de carpetas erróneo en el repositorio.

Por estos motivos recomendamos no utilizar el comando Importar y emplear mejor el método en dos pasos descrito en “Importar en el sitio”, a menos que esté realizando el paso inicial de crear la estructura de carpetas /trunk /tags /branches en el repositorio. Pero ya que estamos aquí, veamos como funciona la importación básica ...

Antes de importar su proyecto en un repositorio debería:

  1. Quitar todos los archivos que no se necesitan para construir el proyecto (archivos temporales, archivos que se generan por un compilador como los *.obj, binarios compilados, ...)

  2. Organizar los archivos en carpetas y subcarpetas. Aunque es posible renombrar/mover los archivos más tarde, ¡es muy recomendable que tenga la estructura del proyecto antes de importarlo!

Ahora seleccione la carpeta superior de la estructura de directorios del proyecto en el explorador de Windows, y haga click con el botón derecho para abrir el menú contextual. Seleccione el comando TortoiseSVNImportar... y aparecerá un cuadro de diálogo:

Figura 4.6. El diálogo Importar

El diálogo Importar


In this dialog you have to enter the URL of the repository location where you want to import your project. It is very important to realise that the local folder you are importing does not itself appear in the repository, only its content. For example if you have a structure:

C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images
      

and you import C:\Projects\Widget into http://mydomain.com/svn/trunk then you may be surprised to find that your subdirectories go straight into trunk rather than being in a Widget subdirectory. You need to specify the subdirectory as part of the URL, http://mydomain.com/svn/trunk/Widget-X. Note that the import command will automatically create subdirectories within the repository if they do not exist.

El mensaje de importación se utiliza como un mensaje de registro.

Por defecto, los archivos y carpetas que concuerden con los patrones globales de ignorar no se importan. Para cambiar este comportamiento, puede utilizar la casilla Incluir archivos ignorados. Lea “Configuración general” para más información sobre cómo establecer un patrón global de ignorar.

Tan pronto como presione Aceptar, TortoiseSVN importa el árbol completo de directorios, incluyendo todos los archivos, en el repositorio. El proyecto ahora está almacenado en el repositorio bajo el control de versiones. Por favor tenga en cuenta que la carpeta que ha importado ¡NO está bajo el control de versiones! Para obtener una copia de trabajo bajo el control de versiones necesita Obtener la versión que acaba de importar. O siga leyendo para averiguar cómo importar una carpeta en el sitio.

Importar en el sitio

Asumiendo que ya tiene un repositorio, y que quiere añadir una nueva estructura de carpetas e él, sólo tiene que seguir estos pasos:

  1. Utilice el navegador de repositorios para crear directamente una carpeta de proyecto en el repositorio. Si está utilizando alguna de las estructuras estándar probablemente querrá crearla como una subcarpeta de trunk en vez de la raíz del repositorio. El navegador de repositorios muestra la estructura del repositorio igual que el Explorador de archivos de Windows, de forma que puedes ver como está organizado.

  2. Obtenga la nueva carpeta encima de la carpeta que quiere importar. Recibirá un aviso indicando que la carpeta local no está vacía. Ignore el aviso. Ahora tendrá una carpeta versionada con contenido no versionado.

  3. Utilice TortoiseSVNAñadir... en esta carpeta versionada para añadir parte o todo su contenido. Puede añadir y eliminar archivos, establecer las propiedades svn:ignore en las carpetas y hacer cualquier otro cambio que necesite.

  4. Confirme la carpeta de más alto nivel, y ya tiene un nuevo árbol versionado, y una copia de trabajo local, creada desde su carpeta existente.

Archivos especiales

A veces necesitará tener un archivo bajo control de versiones que contenga datos específicos del usuario. Esto significa que tiene un archivo que cada desarrollador/usuario necesita modificar para que se ajuste a su configuración local. Pero versionar ese archivo es dificil, porque cada usuario haría confirmaciones de sus cambios cada vez en el repositorio.

En estos casos le sugerimos que utilice archivos plantilla. Cree un archivo que contenga todos los datos que sus desarrolladores puedan necesitar, añádalo al control de versiones y haga que sus desarrolladores lo obtengan. Luego, cada desarrollador tendrá que hacer una copia de ese archivo y renombrar esa copia. Después de eso, modificar la copia no vuelve a ser un problema.

As an example, you can have a look at TortoiseSVN's build script. It calls a file named default.build.user which doesn't exist in the repository. Only the file default.build.user.tmpl. default.build.user.tmpl is the template file which every developer has to create a copy from and rename that file to default.build.user. Inside that file, we added comments so that the users will see which lines they have to edit and change according to their local setup to get it working.

So as not to disturb the users, we also added the file default.build.user to the ignore list of its parent folder, i.e. we've set the Subversion property svn:ignore to include that filename. That way it won't show up as unversioned on every commit.