Control de versiones con Mac
A menudo escribo código. Bien sea un simple pedazo de PHP para alguna web dinámica, un pequeño sketch para Arduino, o un programa completo con Cocoa para Mac OS X.
El caso es que para todos aquellos que llevamos esa fiebre en las venas, un sistema de control de versiones (o revisiones) es algo muy interesante.
Plataformas de control de versiones, también llamadas de gestión de configuración de software (en inglés software configuration management, o SCM) hay muchas, muchísimas, y cada una con sus distintas características.
A la hora de elegir con cual iba a trabajar, lo tube claro y opté por Subversion (SVN), pues es sobre esta plataforma sobre la que trabajan los grandes repositorios de código fuente (Sourceforge y Google Code) y en la que se han apoyado algunos de los mayores proyectos de código libre (GCC, GNOME, KDE y mil otros).
En mi caso el interés no es tanto el desarrollo de software de manera colaborativa con otros desarrolladores, sino más bien mantener una historia de las diferentes versiones de mis desarrollos y sobre todo el mantener todo mi código correctamente almacenado en un repositorio centralizado. O en varios
Trabajar con Subversion en Mac OS X es simplísimo, pues tanto la versión de escritorio como la de servidor incorporan el paquete SVN (versión 1.4.4 en Leopard, aunque a fecha de este post la versión más reciente es la 1.5.1)
Para mi uso particular he optado por configurar un repositorio principal local en el MacBook en el que normalmente escribo mi código y que a su vez sincronizo con otro repositorio espejo de solo lectura en mi servidor.
De esta forma siempre llevo conmigo mi propio repositorio, a la vez que tengo acceso desde la red a mis proyectos desde cualquier otro ordenador con un cliente svn instalado. De la misma forma, si necesito dar acceso a alguien a alguno de mis proyectos puedo hacerlo a través del repositorio espejo del servidor, accesible desde internet.
Todo esto no quita para que alguno de esos proyectos los halla subido al repositorio de Google Code, por si a algún desconocido le pudiese interesar acceder al código fuente o colaborar conmigo en el desarrollo. Vease Generator5x7 en http://generator5x7.googlecode.com
Como software para la gestión de versiones, además del propio paquete SVN que incorpora Leopard para trabajar desde la línea de comandos, uso el módulo de SCM que incorpora XCode para los proyectos que elaboro en esta plataforma; y para aquellos proyectos que no trabajo bajo XCode (Sketches de Arduino, PHP y demás desarrollos no Apple), uso Zigversion, un bonito (y gratuito) cliente SVN que, para lo que necesito, me va de perlas.
En definitiva, Time Machine para el código fuente ya estaba inventado, y a los desarrolladores lleva mucho tiempo cubriéndonos las espaldas.
Hola felicidades por el post, pareces que estoy en la misma situación que tu, pero en una fase inicial, tengo muchisimos proyecto y estoy descubriendo SVN, pero no se como organizar el trabajo, que me sea accesible desde cualquier sitio, y por supuesto seguro.
Te puedo preguntar cómo organizas todos los repositorio? y cómo los haces accesible desde cualquier sitio?
Muchas gracias
Hola David, gracias por los ánimos.
Yo llevo mi repositorio principal en el MacBook, con lo cual siempre viene conmigo. Paralelamente, cada vez que envío un commit tengo montado un script que sincroniza ese repositorio con una copia de él que tengo montada en mi servidor web, lo que me permite acceder a mi código incluso si no tengo mi ordenador a mano. Por último el tener una copia sincronizada de mi repositorio en mi servidor me permite montar Redmine para llevar la gestión de los proyectos, tickets de corrección, etc.
Si no tienes un servidor y se trata de proyectos abiertos, siempre puedes crearte una cuenta en Google Code o SourceForge. Para proyectos privados hay montones de servicios que por un módico precio te permiten alojar tus proyectos con soporte para SVN.
En fin, cada uno se las apaña como puede
Lo que está claro es que desde que descubrí y uso el control de versiones programo de una forma más segura y efectiva.
Saludos.