22 de Enero, 2007

Más opciones para SCM

Ya comenté hace algún tiempo algunas opciones para Source Control Management, y recientemente le he vuelto a pegar un repaso al tema, más que nada por inquietud que por una necesidad inmediata.

Me he llevado una grata sorpresa, porque parece que las cosas han cambiado un poco y ahora hay más opciones para lo que yo buscaba en aquel momento.

En mi revisión del tema me he encontrado en primer lugar con un avance imparable de Subversion, que ya descarté en su momento por solo corregir los defectos del venerable CVS y mantener algunas necesidades que no me eran convenientes (montar un servidor de svn o cvs, no me convence para mis pequeños desarrollos).

En segundo lugar he dado con dos proyectos que pintan realmente bien, ambos con un modelo de desarrollo distribuido (es decir: no centralizado):

  • GIT: este es el proyecto que comenzó Linus para tener un SCM libre que se ajustara a las necesidades del desarrollo del kernel Linux. Es una buena apuesta porque está en desarrollo activo, y previsiblemente tendrá un excelente soporte durante mucho tiempo por emplearse como base para los desarrolladores de Linux.
  • Bazaar: este proyecto está respaldado por Canonical, la empresa detrás de Ubuntu. Su punto fuerte sobre GIT es que está programado en Python y por lo tanto es muy portable, con soporte para Linux, Windows, Mac y *BSD. Su debilidad está quizás en que no tienen todavía un servidor dedicado lo suficientemente potente.

En este momento ambas propuestas son completamente funcionales, y trabajan con una filosofía casi idéntica, permitiendo ambos diferentes modelos de desarrollo.

El hecho de que sean SCM distribuidos no debe confundirnos: aún con esta característica se puede seguir una estrategia centralizada. Es tan sencillo como definir una rama considerada central en la que se aplicarán los cambios que realicen los diferentes programadores en sus propias ramas de desarrollo.

Además de la ventaja de ser distribuidos (me parece impagable poder hacer los commit que necesite en mi rama, sin miedo a fastidiar nada y sin permiso especial de nadie, pudiendo aplicar los cambios que desee en cualquier momento a la rama principal de ser necesario), la forma de distribuir las ramas, y en muchos casos modificarlas, puede ser sobre protocolos existentes como HTTP, FTP o SFTP, de manera que no es necesario disponer de un servidor dedicado (aunque sería más eficiente, por supuesto).

¿Cómo es de complicado trabajar con ellos? Con algo de experiencia con CVS o svn es muy fácil. Veamos un ejemplo de uso sencillo en ambos casos, sin pretender ser un tutorial (estos ejemplos pueden contener errores :D), solo quiero resaltar las similitudes entre ambas herramientas.

Configuramos nuestros datos:

GIT
$ git repo-config --global user.name "John Foo"
$ git repo-config --global user.email devel@midominio.dom
Bazaar
$ echo -e "[DEFAULT]\nemail = John Foo <devel@midominio.dom>" \
> $HOME/.bazaar/bazaar.conf

Obtenemos una rama para trabajar:

GIT
$ git clone http://www.desarrollo.dom/devel/main mi_main
Bazaar
$ bzr branch http://www.desarrollo.dom/devel/main mi_main

Trabajamos un poco, pero no mucho:

GIT
$ cd mi_main
...hack hack hack...
Bazaar
$ cd mi_main
...hack hack hack...

Vemos nuestros cambios:

GIT
$ git diff
...aquí va un diff con los cambios realizados...
Bazaar
$ bzr diff
...aquí va un diff con los cambios realizados...

Guardamos los cambios en el historial de nuestro repositorio:

GIT
$ git commit -a -m 'he hecho unos cuantos hacks'
Bazaar
$ bzr commit -m 'he hecho unos cuantos hacks'

Ahora ya tendríamos que integrar nuestros cambios, de así desearlo, con la rama principal de desarrollo, y las diferencias empiezan a aparecer (por ahora vemos que no hay muchas a nivel de uso muy básico).

Igual esto ha sido suficiente para que le pique la curiosidad a más de uno, así que voy a apuntar a: a tutorial introduction to GIT y quick hacking with Bazaar.

La única pega que le veo a estos dos SCM es su relativa novedad en el mercado, con lo que no abunda la integración de estas herramientas en los diferentes entornos de desarrollo, pero imagino que poco a poco se irá corrigiendo la situación, porque su futuro promete mucho.

Bueno, hay otra pega. No he podido decidirme todavía por uno de los dos :).

Anotación por Juan J. Martínez, clasificada en: programming, scm, software libre.

Hay 7 comentarios

Gravatar

Darcs, homepage: http://abridgegame.org/darcs/

Realmente no he encontrado nada más potente y cómodo para repositorios chicos/medianos (para repos grandes tipo linux todavía no escala)

He escuchado hablar muy bien de monotone, pero no lo probé y creo que no buscabas ser exaustivo con el post, así que nomás recomendarte darcs.

por Des, en 2007-01-23 09:15:32

Gravatar

No sé porqué no anduvo el link al homepage de darcs, quizás quieras revisarlo.

por Des, en 2007-01-23 09:17:08

Gravatar

He arreglado el enlace, no sé porqué ha fallado :P

Pues ahora que lo dices sí miré Darcs hace tiempo, pero creo recordar que estaba algo verde por aquel entonces. Ojeando por encima no te sé decir, como mínimo la sintaxis parece algo diferente a lo que estoy más acostumbrado (eso tampoco quiere decir nada).

Desde luego que no he pretendido ser riguroso, solo comentar un poco los casos de GIT y Bazaar. Gracias por el apunte ;) Hay una comparativa, por cierto, en la web de Bazaar:
http://bazaar-vcs.org/RcsComparisons

por Juanjo, en 2007-01-23 09:35:24

Gravatar

Aunque la calidad del código que desarrollo no sea ninguna maravilla me apetece probar algún control de versionado, estaba casi decidido por SVN, pero vistas las alternativas no hay motivo para cuadricularse.

por r0sk, en 2007-01-23 10:56:48

Gravatar

Simplemente que la comparativa de la web de bazaar deja bastante que desear. Hubo un hilo bastante largo en las listas de Git y Bazaar acerca de ella.

Yo personalmente empecé a utilizar Git hace no mucho y ahora lo utilizo siempre que puedo.

Su Wiki (http://git.or.cz/gitwiki) tiene bastante información.

- ferdy

por Fernando J. Pereda, en 2007-01-23 11:48:03

Gravatar

Las comparativas realizadas por las partes interesadas, sin querer acusar a nadie de nada, suelen ser poco fiables per se, pero esta no me ha disgustado para ver características generales de cada SCM.

De todas formas me temo mucho que las bondades y maldades de cada sistema se disfrutan y/o sufren con el uso, lo demás al final es solo especular :P

por Juanjo, en 2007-01-23 12:18:00

Gravatar

ah, rayos... había escrito una buena cantidad de texto, y no mencionas en el formulario que hay que tener las cookies activadas... espero que solo eso... arregla eso... me dieron unas ganas de mandarte a la mismisima y dejar de leerte y etc, etc...

Mercurial, es de tipo distribuido.. no lo he testeado... actualmente utilizo Subversion...

por Cranorve, en 2007-01-30 20:59:54

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: