1. 094-097-DiseæoWeb-usr206.qxp 16/05/2008 02:27 p.m. PÆgina 94
WEBMASTERS RODRIGO GALÍNDEZ
COORDINANDO VERSIONES DE CÓDIGO FÁCILMENTE rodrigogalindez@gmail.com
CONTROL DE VERSIONES DISEÑADOR WEB, APASIONADO-
USANDO SUBVERSION POR TODO LO QUE VAYA DESPUÉS
DE HTTP://
EN UN AMBIENTE DE TRABAJO UNIPERSONAL, ES SENCILLO CONTROLAR EL VERSIONADO DE UN DOCUMENTO
XHTML. PERO ¿QUÉ PASA CUANDO TRABAJAMOS EN EQUIPO? LES PRESENTAMOS SUBVERSION, UNA HERRA-
MIENTA PARA FACILITAR LA COORDINACIÓN ENTRE GRUPOS DE TRABAJO.
▼ Seguramente, en algún momento de código fuente, páginas o documentación. El Como pueden observar, su uso en equipos de
nuestra carrera profesional nos hemos pre- artículo estará enfocado en un caso inicial, trabajo está perfectamente justificado. De
guntado lo siguiente: “¿Quién tiene la última pero práctico, de utilización del software, y cualquier manera, Subversion también es útil
versión de este archivo XHTML?”, “¿cuáles dejaremos los detalles puntiagudos a la cu- como una herramienta de backup incremen-
son los últimos cambios que se hicieron en riosidad del lector. tal unipersonal. Imaginemos SVN como un
las hojas de estilo?”, “¿cómo puedo evitar so- sistema de históricos con capturas en el có-
brescribir el código fuente de mi compañe- PRESENTANDO SUBVERSION digo fuente automáticas. Cada vez que en-
ro?”. Si no tenemos un sistema confiable pa- Como dijimos anteriormente, Subversion viemos un archivo modificado al repositorio,
ra mantener y coordinar versiones de código, (SVN) es un sistema de control de versiones: éste creará una copia de la versión anterior.
responder a estas preguntas es casi imposi- maneja los archivos y las carpetas de Ninguna de las copias anteriores se perderá, por
ble, y trabajar a ciegas puede ser el único ca- un proyecto y sus modificaciones en el lo que siempre podremos volver a una versión
mino posible. transcurso del tiempo. Fue creado en el anterior de nuestros archivos si es necesario.
En esta edición hablaremos de Subversion, año 2000 en CollabNet Inc, con el objetivo Es más, si estamos trabajando con un servi-
tal vez el sistema más utilizado para contro- de ser una alternativa real y mejorada a CVS dor de Subversion ubicado en algún lugar de
lar versiones de documentos, ya sean éstas (Concurrent Versions System, un sistema de Internet, digamos, un servidor alojado en los
control de versiones que era la solución de Estados Unidos, tenemos una buena posibi-
facto en la época). Al igual que otros pro- lidad de no perder los archivos originales por
Subversion en la Web yectos exitosos de renombre, SVN es libre y un desperfecto en nuestras computadoras.
Tenemos la suerte de que, últimamente, Open Source, ya que está distribuido bajo la Como introducción, en este informe sola-
vienen apareciendo servicios interesantes licencia Apache. mente nos conectaremos a un repositorio
basados en la Web para probar Subversion. Subversion trabaja replicando el mode- creado en nuestra propia máquina, pero en
Algunos ofrecen cuentas gratuitas, limita- lo cliente/servidor: uno o más clientes se el recuadro Subversion en la Web pueden en-
das en su funcionalidad, claro, y otros están conectan a un servidor central que tiene la contrar servidores alojados de Subversion
destinados a un uso fuerte del sistema. última copia del proyecto, como también co- listos para probar.
Los siguientes son los más interesantes: pias de sus versiones anteriores, dentro de
lo que llamaremos un repositorio. El clien- LO BÁSICO: CHECKOUT,
Beanstalk (www.beanstalkapp.com) te pide la última versión disponible del pro- UPDATE Y COMMIT
Servicio nuevo y con buena interfaz, real- yecto para poder trabajar. Los clientes hacen Los tres comandos que usaremos con más
mente muy fácil de usar. Es gratuito con cambios y, por último, sincronizan sus copias frecuencia al trabajar con Subversion son
hasta 20 MB de almacenamiento. Se desta- con el repositorio. svn checkout, svn update y svn commit.
ca su excelente soporte. Es ideal para los
que recién comienzan con Subversion.
Roundhaus (www.roundhaus.com)
Aunque la cuenta gratuita tiene sus limita-
ciones, se destaca por ser uno de los pocos
que ofrecen un servicio de integración con-
tinua, lo cual lo convierte en algo más que
un simple repositorio en la Web. Figura 1.
La representación gráfica
Google Code (http://code.google.com) en la que podemos ver
Dentro del amplio abanico de servicios gra- un repositorio con tres
tuitos de Google, se destaca Google Code, clientes conectados.
que ofrece hosting gratuito ilimitado con ac- Subversion ordena
ceso, claro, a Subversion. y facilita el trabajo.
94 redusers.com
2. 094-097-DiseæoWeb-usr206.qxp 16/05/2008 02:27 p.m. PÆgina 95
FOROS
www.redusers.com/foros/webmasters
Veamos en qué consisten:
1) SVN CHECKOUT
Descarga una copia privada de la última ver-
sión del proyecto, es decir, una working copy,
a nuestra máquina. Es lo primero que tene-
mos que hacer al iniciar una sesión de tra-
bajo con SVN.
2) SVN UPDATE
Como su nombre indica, se usa para actuali-
zar nuestra working copy con los últimos
cambios hechos por nuestros compañeros.
Este comando debe ejecutarse a menudo para
tener siempre una copia fresca del proyecto.
3) SVN COMMIT
Envía al repositorio los cambios que hicimos en
nuestra copia privada. De más está decir que es
una buena práctica, en cada commit, comentar
los cambios que hicimos en la versión que es-
tamos enviando. De esta manera, nuestros com-
pañeros de equipo tendrán una buena ayuda so-
bre qué es lo nuevo en la última versión que
están descargando (los comentarios se pueden
agregar usando el mismo comando commit o,
como veremos más adelante, completando un Figura 2. svnX, el cliente más popular en Mac, conectado a un repositorio.
campo en una ventana). Fíjense en todas las versiones del proyecto (columna Rev #) y sus
No se preocupen: todos estos comandos tie- comentarios (columna Log Message).
nen sus semejantes en la herramienta visual
que usaremos en este artículo, TortoiseSVN,
por lo que haciendo un par de clics evitare- nosotros nos interesará por el momento son
mos tipearlos en una ventana de terminal. sus versiones nocturnas, públicamente dis-
Sin embargo, lo importante en este punto es ponibles mediante SVN.
que entiendan el proceso de trabajar con Primero, debemos bajar TortoiseSVN (gratui-
Subversion, que en su concepción más to, Open Source) de http://tortoisesvn.net/
simple consiste en tres pasos: 1. checkout, downloads. TortoiseSVN viene en un archivo
2. update y 3. commit. Con el tiempo apren- instalable .msi, y en versiones de 32 y 64 bits.
deremos más comandos útiles para trabajar En este paso también podemos bajar el pa-
con el sistema, como svn diff, que permite quete del idioma español. Nota: los usuarios
buscar diferencias entre los archivos que es- de Mac tenemos en svnX el cliente perfecto
tamos subiendo. para usa r Subversión, que se puede des-
cargar de http://rubyurl.com/RGbz. Todos los co-
CONECTANDO mandos de TortoiseSVN tienen sus equiva-
AL REPOSITORIO lentes en svnX, por lo que a los lectores
DE WORDPRESS “maqueros” les será sencillo adaptar las ins-
Vamos a ver un ejemplo rápido para familia- trucciones de este artículo. Ahora, una vez
rizarnos con la herramienta: nos conectare- descargada e instalada la herramienta en la
mos al repositorio (de sólo lectura) de Word- PC, nos conectarnos al servidor SVN de Word-
Press. Como muchos saben, WordPress es el Press. Para esto, crearemos una nueva car-
CMS para weblogs más utilizado en la ac- peta en alguna parte de nuestra PC que fun- Figura 3. Un menu contextual de
tualidad. Aunque se puede descargar direc- cionará como working copy, o copia privada Windows con ítems agregados por
tamente desde www.wordpress.org, lo que a del proyecto en que se trabaja. TortoiseSVN.
redusers.com 95
3. 094-097-DiseæoWeb-usr206.qxp 16/05/2008 02:27 p.m. PÆgina 96
WEBMASTERS
COORDINANDO VERSIONES DE CÓDIGO FÁCILMENTE
Eso es todo, ya podemos disfrutar de la úl- Para esto, seguimos los mismos pasos que
tima versión de WordPress en una carpeta en el ejemplo anterior (conectando a Word-
de nuestra PC. Veamos ahora cómo crear un Press), pero esta vez, en vez de apuntar al
repositorio y escribir en él. repositorio de WordPress, apuntamos a la
carpeta de nuestro repositorio creada en el
CREANDO punto anterior. TortoiseSVN descargará la
UN REPOSITORIO versión 0 del repositorio, es decir, no des-
Una de las ventajas de TortoiseSVN es que fa- cargará ningún archivo.
Figura 4. La ventana cilita la creación de repositorios locales. Lite-
para hacer checkout. ralmente, con un clic derecho en una carpeta 3) HACER ALGÚN CAMBIO
determinada se puede crear un repositorio en Ahora bien, crearemos un archivo nuevo de tex-
Hacemos clic derecho en esa carpeta y segundos. Veamos un ejemplo completo. Los to en la misma carpeta del punto anterior. Este
Windows, además de las opciones habitua- pasos que debemos hacer son los siguientes: archivo será luego nuestro primer commit.
les de un menú contextual, nos mostrará dos
opciones propias de la herramienta: [SVN 1) CREAR 4) HACER EL PRIMER COMMIT.
Checkout] y [TortoiseSVN] (Figura 3). EL REPOSITORIO Ahora subiremos el archivo creado en el punto
Como ven, TortoiseSVN no tiene una venta- Creamos una nueva carpeta en alguna par- anterior. Si prestamos atención, el icono de la
na de aplicación propiamente dicha, funcio- te de nuestra PC. Hacemos clic derecho so- carpeta con nuestra copia privada ahora tiene
na solamente como un agregado al menú bre ella y buscamos la opción [Create re- un icono de una tilde. Esto quiere decir que hay
contextual de Windows, lo cual le otorga pository here], que se encuentra dentro del cambios en esa carpeta, listos para ser sincro-
una gran flexibilidad. ítem [TortoiseSVN]. La herramienta nos nizados en el repositorio. Hacemos clic derecho
Del menú contextual elegimos la opción mostrará una ventana donde tendremos que en la carpeta y seleccionamos [SVN Commit].
[SVN Checkout], y TortoiseSVN nos mos- elegir el tipo de repositorio. Elegimos TortoiseSVN mostrará una ventana con infor-
trará una ventana para ingresar datos del [Native filesystem] (sistema de archivos mación que tendremos que completar sobre la
servidor SVN (Figura 4). Escribimos nativo) y continuamos. TortoiseSVN creará versión que estamos subiendo. En la mitad in-
http://svn.automattic.com/wordpress/ trunk en el campo la estructura de carpetas necesaria para el ferior de esta ventana veremos los archivos que
[URL of repository] y hacemos clic en [OK] funcionamiento de Subversion. fueron modificados (en este caso, el archivo de
para empezar el ejecutar el comando. Tortoi- texto) y sus propiedades. Seleccionamos el ar-
seSVN copiará la última versión del repositorio 2) HACER EL PRIMER chivo y continuamos. TortoiseSVN aplicará los
CHECKOUT
de WordPress a esa carpeta. En este paso tam- cambios en el repositorio para completar la fla-
bién es interesante la opción [Show log], que Ahora debemos crear una carpeta para tra- mante versión 1 del proyecto (Figura 5).
despliega un historial con las versiones ante- bajar en nuestra copia privada y hacer el pri- De aquí en más, el proceso de trabajo será si-
riores a la actual y sus comentarios. mer checkout. milar: hacer un checkout de la última versión en
el repositorio, realizar cambios en nuestra co-
pia privada, luego hacer un update y, por últi-
mo, un commit. En la práctica, y con grupos de
trabajo, el proceso no es tan sencillo, ya que si
hay inconsistencias entre los archivos, tendre-
mos que combinarlos (lo que en la jerga se co-
noce como merge), lo cual a veces puede re-
sultar en más de un dolor de cabeza. Pero, claro,
todo esto se aprende durante la marcha.
CONCLUSIÓN
Subversion puede parecer difícil, pero una vez
que se le pierde el miedo, es una herramien-
Figura 5. ta sumamente útil. Aunque tal vez SVN sea
Aquí estamos más conocido en el ámbito del desarrollo de
haciendo software a gran escala, ya es hora de que, co-
commit de mo desarrolladores web, tengamos a mano
un archivo en una herramienta de control de versiones, aun
el software cuando trabajemos solos.
gratuito y Esperamos que se hayan entusiasmado con
open source Subversion, y como siempre, el foro de USERS
TortoiseSVN. está abierto para cualquier consulta. ▲
96 redusers.com