Capítulo 3. El repositorio

Tabla de contenidos

Creación de repositorios
Creando un repositorio con el cliente de línea de comandos
Creando el repositorio con TortoiseSVN
Acceso local al repositorio
Accediendo a un repositorio en una unidad de red
Organización del repositorio
Copia de seguridad del Repositorio
Scripts gancho en el lado del servidor
Enlaces de obtener
Accediendo al repositorio

Sin importar el protocolo que use para acceder a sus repositorios, siempre necesita crear al menos un repositorio. Esto puede hacerse o bien con el cliente de línea de comandos de Subversion o con TortoiseSVN.

Si todavía no ha creado un repositorio de Subversion, ahora es el momento de hacerlo.

Creación de repositorios

Creando un repositorio con el cliente de línea de comandos

  1. Cree una carpeta vacía con el nombre SVN (por ejemplo, D:\SVN\), que se usará como la raíz de todos sus repositorios.

  2. Cree otra carpeta MiNuevoRepositorio dentro de D:\SVN\

  3. Open the command prompt (or DOS-Box), change into D:\SVN\ and type

    svnadmin create --fs-type fsfs MyNewRepository
              

Ahora ya tiene un nuevo repositorio que se encuentra en D:\SVN\MiNuevoRepositorio.

Creando el repositorio con TortoiseSVN

Figura 3.1. El menú de TortoiseSVN para carpetas no versionadas

El menú de TortoiseSVN para carpetas no versionadas

  1. Abra el explorador de Windows

  2. Cree una nueva carpeta y llámela por ejemplo SVNRepositorio

  3. Haga click con el botón derecho sobre la carpeta recién creada y seleccione TortoiseSVNCrear Repositorio aquí....

    Entonces se creará un repositorio dentro de la nueva carpeta. ¡¡¡No edite los archivos!!!. Si se encuentra con algún error asegúrese que la carpeta esté vacía y que no esté protegida contra escritura.

    También se le preguntará si quiere crear una estructura de directorio dentro del repositorio. Encuentre más sobre opciones de disposición en “Organización del repositorio”.

    TortoiseSVN colocará un ícono de carpeta personalizado cuando crea un repositorio para que usted pueda identificar los repositorios locales más fácilmente. Si crea un repositorio usando el cliente de línea de comando oficial este ícono de carpeta no se asigna.

Sugerencia

We also recommend that you don't use file:// access at all, apart from local testing purposes. Using a server is more secure and more reliable for all but single-developer use.

Acceso local al repositorio

Para acceder a su repositorio local, necesita la ruta a esa carpeta. Recuerde que Subversion espera todas las rutas de repositorios con el formato file:///C:/RepositorioSVN/. Tenga en cuenta el uso de las barras de dividir.

Para acceder a un repositorio que se encuentre en una unidad de red compartida puede o bien utilizar mapeado de unidades, o bien usar la ruta UNC. El formato de una ruta UNC es file://NombreDelServidor/ruta/al/repositorio/. Observe que sólo hay 2 barras invertidas aquí.

Antes de SVN 1.2, las rutas UNC tenían que estar dadas en la forma más oscura file:///\NombreDelServidor/ruta/al/repositorio. Esta forma aún se puede utilizar, pero no está recomendada.

Accediendo a un repositorio en una unidad de red

Although in theory it is possible to put a FSFS repository on a network share and have multiple users access it using file:// protocol, this is most definitely not recommended. In fact we would strongly discourage it, and do not support such use for various reasons:

  • En primer lugar, está dando a todos los usuarios acceso directo de escritura en el repositorio, por lo que cualquier usuario podría accidentalmente borrar el repositorio completo o hacerlo inutilizable de cualquier otra forma.

  • En segundo lugar, no todos los protocolos de compartición de archivos de red soportan el bloqueo que Subversion necesita, por lo que puede encontrar que su repositorio se corrompe. Puede que no ocurra al principio, pero un día dos usuarios intentarán acceder al repositorio al mismo tiempo.

  • En tercer lugar, también debe establecer los permisos de los archivos. Puede ser sencillo en una unidad de red nativa de Windows, pero en SAMBA esto es particularmente dificil.

  • If one person installs a newer version of the client which upgrades the repository format, then everyone else will be unable to access the repository until they also upgrade to the new client version.

El acceso file:// está pensado únicamente para el acceso local por un único usuario, en particular para testeos y depuraciones. Cuando desee compartir el repositorio, realmente necesita configurar un servidor de forma apropiada, y realmente no es tan dificil como pueda pensar. Lea “Accediendo al repositorio” para obtener indicaciones sobre cómo elegir y configurar un servidor.

Organización del repositorio

Antes de importar sus datos al repositorio, primero debería pensar cómo quiere organizar sus datos. Si utiliza uno de los patrones recomendados lo tendrá luego mucho más fácil.

Hay algunas formas estándar y recomendadas de organizar un repositorio. La mayoría de la gente crea un directorio trunk (tronco) para alojar la línea principal del desarrollo, un directorio branches (ramas) para que contenga las copias/ramas, y un directorio tags (etiquetas) para contener las copias/etiquetas. Si un repositorio sólo aloja un proyecto, a menudo la gente crea estos directorios en el primer nivel:

/trunk
/branches
/tags
    

Dado que esta disposición es usada tan comunmente, cuando crea un nuevo repositorio usando TortoiseSVN, se le ofrecerá también crear la estructura de directorio por usted.

Si un repositorio contiene múltiples proyectos, la gente a menudo indexa por ramas:

/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
    

...o por proyecto:

/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
    

Indexar por proyecto tiene sentido si los proyectos no están muy relacionados y cada uno se obtiene de forma individual. Para proyectos relacionados donde puede querer obtener todos los proyectos de golpe, o donde los proyectos están unidos y forman un paquete de distribución único, a menudo es mejor indexar por rama. De esta forma sólo tendrá un tronco para obtener, y las relaciones entre sub-proyectos se ven más fácilmente.

Si adopta una aproximación de primer nivel /trunk /tags /branches, no es necesario decir que tendrá que copiar el tronco completo para cada rama y etiqueta, y de alguna forma esta estructura ofrece la mayor flexibilidad.

Para proyectos que no tienen que ver, puede preferir utilizar repositorios separados. Cuando confirma los cambios, lo que cambia es el número de revisión del repositorio completo, no el número de revisión del proyecto. Si tiene 2 proyectos que no tengan que ver compartiendo un repositorio, eso puede llevar a que ocurran grandes lagunas en los números de revisión. Los proyectos Subversion y TortoiseSVN aparecen en el mismo servidor, pero son dos repositorios totalmente separados que permiten un desarrollo independiente, y no hay confusión sobre los números de compilación.

Por supuesto, tiene libertad para ignorar estos patrones comunes. Puede crear cualquier variación, la que mejor le venga a usted o a su equipo. Recuerde que cualquiera que sea la que elija, no es una elección inamovible. Puede reorganizar su repositorio en cualquier momento. Dado que las ramas y las etiquetas son directorios normales, TortoiseSVN puede mover o renombrarlas como desee.

Cambiar de una disposición a otra es sólo una cuestión de ejecutar una serie de movimientos en el lado del servidor; si no le gusta la forma en la que están organizadas las cosas en el repositorio, sólo tiene que ir moviendo los directorios.

Así que si no ha creado todavía una estructura básica de carpetas dentro de su repositorio, debería hacerlo ahora. Hay dos formas de conseguirlo. Si simplemente desea crear una estructura /trunk /tags /branches, puede utilizar el visor de repositorios para crear las tres carpetas (en tres confirmaciones distintas). Si desea crear una jerarquía más profunda, es más fácil crear primero una estructura de carpetas en el disco e importarla en una única confirmación, por ejemplo:

  1. Cree una nueva carpeta en su disco duro

  2. Cree la estructura de carpetas de primer nivel dentro de esa carpeta - ¡no ponga ningún archivo allí todavía!

  3. Importe esta estructura en el repositorio via click con el botón derecho en la carpeta y seleccionando TortoiseSVNImportar.... Esto importará su carpeta temporal a la raíz del repositorio para crear la estructura básica del repositorio.

Note that the name of the folder you are importing does not appear in the repository, only its contents. For example, create the following folder structure:

C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags
      

Import C:\Temp\New into the repository root, which will then look like this:

/trunk
/branches
/tags