7 de Febrero, 2005

Algunas opciones para SCM

Ya comenté que yo me manejo con RCS, principalmente porque en mis proyectos suelo ser el único hacker :P.

Se me está planteando un nuevo problema estos días y es que cuando realizo cambios en mi versión de desarrollo me gustaría que esos cambios estuvieran disponibles de una forma fácil para que los pruebe quien quiera.

RCS no aporta ningún mecanismo para hacer esto, así que se me ocurren un par de soluciones.

Una es hacer un snapshot (coger el árbol de fuentes y publicarlo como código en desarrollo en un momento temporal determinado), y la otra es publicar un conjunto de parches que al aplicarlos no lleve a ese código en desarrollo.

La primera opción es cómoda para los usuarios, pero poco eficiente y más complicada de gestionar por mi parte si alguien decidiera enviar alguna contribución. Esto es porque normalmente no introduzco los cambios en el repositorio hasta que están bien probados. Para que la opción snapshot funcione tendría que aplicar los cambios antes de publicar el código en desarrollo. Si paso a emplear un otro SCM (Source Control Management), tendré que cambiar un poco esta forma de trabajar, pero por ahora estoy contento.

La opción de los parches para mi es más cómoda, pero menos accesible a aquellas personas que no están familiarizadas con patch, aunque siempre incluyo los pasos explicados en cada parche. Los parches los genero contra la última versión publicada, de forma acumulativa generalmente (es decir, todos los cambios en un parche), y es interesante que se puedan generar sin aplicar los cambios en el repositorio.

He estado ojeando posibilidades para comenzar a usar algún SCM más sofisticado (¡y moderno! RCS es un dinosaurio :D), y esta es un poco la lista valorada:

  • CVS: Esta es la opción más utilizada hoy en día, y sería el paso más fácil desde RCS. Lo he usado varias veces y no hay gran diferencia con lo que hago ahora, aunque le veo dos pegas.

    En primer lugar requiere de un servidor que destaca por su historial de fallos de seguridad :). Esto no es malo, malo, que se encuentren errores es positivo y solo hay que corregirlos, aunque es cierto que aumenta el trabajo que cuesta mantener el chiringuito. En segundo lugar adolece de los mismo problemas que tiene RCS, como no soportar el renombrado de archivos y la dificultad de administrar el propio repositorio.

  • Subversion: Esto viene a ser como una revisión de CVS, no literalmente hablando. Se ha intentado reemplazar toda la funcionalidad de CVS, aprovechando conceptos, y solucionando todos los problemas del clásico.

    No le veo pegas en un principio, es una opción muy atractiva.

  • GNU Arch: Esta opción es la más radical. Cambia todos los conceptos, el repositorio deja de ser centralizado y pasa a ser distribuido (permitiendo trabajar muy cómodamente desconectado), y probablemente toda la experiencia que tengamos con RCS/CVS sirve de poco.

    En contra tiene que, habiendo leído abundante documentación, resulta algo complejo sobretodo por el cambio de esquemas. A su favor tiene que no requiere servidor. El cliente realiza todo el trabajo duro, con lo que se puede montar un repositorio sobre HTTP (solo lectura), FTP (lectura/escitura), SFTP (lectura/escritura seguro), etc.

He simplificado demasiado, lo sé :). Existe una comparativa entre SCMs, aunque es algo profunda de mas y ahora mismo no me termina de aclarar nada.

Ya veremos que hago, por ahora seguiré trabajando como lo vengo haciendo porque resulta mucho más fácil que el esfuerzo del cambio a expensas de recibir beneficios a medio/largo plazo.

Anotación por Juan J. Martínez.

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.