Subversion en Windows

De ChuWiki

La página oficial de Subversion es http://subversion.tigris.org/ . Allí, aunque cuesta un poco encontrarlo, tenemos la página de descargas http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&expandFolder=91&folderID=8100 . De todas formas, en http://www.open.collab.net/downloads/subversion.html tenemos más organizaditas las posibles descargas de subversion para los distintos sistemas operativos.

Antes de nada, debemos decidir qué tipo de servidor de Subversion queremos arrancar. En Decisiones a la hora de montar un repositorio de subversion se cuentan las opciones que tenemos. Si optamos por una opción sin servidor, bien porque vamos a usar un servidor de los que hay por internet como Project Hosting on Google, bien porque nos decidimos por la versión local sin servidor, sólo tendremos que bajarnos el cliente de subversion. Si queremos montar nuestro propio servidor, entonces bajarnos la parte del servidor.


Crear un repositorio[editar]

Salvo que hayamos decidido usar un repositorio de algún hosting de internet, debemos crear un repositorio en alguno de nuestros directorios locales. Para ello damos los siguientes pasos:

  • Crear el directorio. Puede ser cualquiera en cualquier path.
mkdir c:\REPOSITORIO
  • Preparar el directorio para que haga de repositorio. Basta con ejecutar una vez el comando
svnadmin create c:\REPOSITORIO

Ahora, si hemos decidido instalar un servidor, debemos arrancarlo dándole este path como repositorio. Si arrancamos svnserve (que viene con la instalación de subversion), podemos hacerlo así

svnserve.exe --daemon --root C:\REPOSITORIO

indicando --daemon que se arranque como servicio y --root C:\REPOSITORIO el path donde creamos el repositorio.

trunk, tags y branches[editar]

Es habitual crear en el repositorio de subversion tres subdirectorios de nombre trunk, tags y branches. No es en absoluto obligatorio y podemos hacerlo como nos de la gana o no hacerlo en absoluto, pero sí es algo que normalmente hace todo el mundo. Cualquier desarrollador acostumbrado a usar subversion esperará encontrar esos subdirectorios, así que es conveniento crearlos si no se quiere sembrar el desconcierto.

El directorio trunk es para guardar los fuentes actualmente en desarrollo. Normalmente ahí debajo estará siempre la última versión, aunque no sea la buena.

El directorio tags es para crear copias de nuestro proyecto en algún punto concreto. Por ejemplo, si tenemos nuestro proyecto funcionando y pensamos realizar cambios para mejorar o implementar nueva funcionalidad, suele ser habitual crear debajo de tags un subdirectorio con un nombre que nos identifique esa versión que funciona y copiar ahí los fuentes que funcionan antes de liarse a hacer cambios.

En directorio branches es, al igual que tags, para hacer copias de versiones que se han entregado al cliente o publicado mientras seguimos desarrollando en trunk. Si el cliente encuentra un error en su versión, nos lo comunica y nosotros modificamos sobre la versión en branches (la que tiene el cliente). De esta forma podemos entregarle al cliente la versión que ya tiene con los errores corregidos, sin necesidad de darle la versión más moderna que quizás no esté totalmente desarrollada o probada.

Importar un proyecto en Subversion[editar]

En cualquier otro sitio empezamos nuestro proyecto, con nuestros fuentes y demás. Por ejemplo, supongamos que creamos nuestro proyecto en C:\users\chuidiang\PROYECTO Una vez que tengamos lo que queramos meter como primera versión en Subversion, ejecutamos

cd C:\users\chuidiang\PROYECTO
svn import -m"un comentario" . file:///c:/REPOSITORIO/PROYECTO/trunk

Es decir, nos situamos en el directorio padre de PROYECTO y ejecutamos el comando svn import de Subversion. Eso copiará todo lo que hay en C:\users\chuidiang\PROYECTO dentro de c:\REPOSITORIO\PROYECTO\trunk. Por supuesto, el nombre de nuestro directorio PROYECTO y el nombre que pongamos dentro del repositorio pueden ser distintos.

Vamos a aclarar un poco lo de file:///c:/REPOSITORIO/PROYECTO/trunk

Ponemos trunk al final porque como hemos comentado, lo habitual es meter los fuentes actuales de nuestro proyecto en un subdirectorio trunk. Aunque no exista, el comando svn import lo creará por nosotros.

Lo de file:///c:/... depende del servidor que estemos usando

  • Si lo hacemos en local, sin servidor, se hace como lo hemos puesto, file:///c:/REPOSITORIO/PROYECTO/trunk. Es importante fijarse en windows que hay que poner tres barras delante de la letra de la unidad.
  • Si usamos un servidor arrancado con svnserve, entonces debemos poner otro protocolo y no es necesario poner el path absoluto, ya que svnserve ya sabe dónde está ubicado el repositorio. Bastaría con svn://<ip-servidor>/trunk
  • Su usamos un hosting de internet o hemos arrancado un servidor usando un servidor http (apache por ejemplo), entonces el protocolo es http y la url sería http://<ip-servidor>/trunk
  • Hay más opciones de servidores, y habría que usar cosas como https://, svn+ssh://, etc.

Sacar un proyecto de Subversion[editar]

Después de hacer el svn import, nuestro directorio C:\PROYECTO no se convierte en un directorio de trabajo. Es necesario hacer un svn checkout en algún sitio. Para ello, nos vamos a donde queramos nuestro directorio de trabajo -o movemos C:\PROYECTO a otro sitio- y ejecutamos

cd C:\DIRECTORIO_TRABAJO
svn checkout file:///c:/REPOSITORIO/PROYECTO

Esto nos creará un directorio PROYECTO y sacará ahí todos los ficheros de nuestro proyecto.

Al igual que antes, file:/// es para el caso de no usar ningún tipo de servidor. Debemos reemplazarlo por el protocolo del servidor concreto que hayamos elegido.

Modificar ficheros en Subversion[editar]

Una vez sacada nuestra copia de trabajo, podemos seguir trabajando en nuestro proyecto, modificando ficheros. Subversion está preparado para que metamos todos nuestros cambios de una sola vez, de forma que se incrementa el número de versión en uno para todo el proyecto. Por ello, una vez hechos nuestros cambios, debemos realizar los siguientes pasos.

  • Borrar de nuestro directorio y de subversion los ficheros que ya no queramos que formen parte de nuestro proyecto
cd C:\DIRECTORIO_TRABAJO\PROYECTO
svn remove path\fichero_a_borrar
  • Añadir a subversion los ficheros nuevos que hayamos creado
svn add path\fichero_nuevo
  • Confirmar los borrados, añadidos y modificados todo en un solo paso
svn commit -m"un comentario"

El último svn commit borrará del repositorio de Subversion y de nuestro directorio de trabajo todos los ficheros de los que hayamos hecho un svn remove, meterá en el repositorio de Subversion todos los ficheros que hayamos creado con svn add y finalmente meterá en el repositorio de Subversion todos los ficheros que hayamos modificado.

Enlaces externos[editar]