Es indudable que para cualquier tipo de desarrollo serio hoy dia se necesita un software de control de versiones, sobre todo si uno trabaja en grupo (aunque no únicamente). Hasta hace algún tiempo las posibilidades de elección eran pocas, uno de los viejitos como RCS o uno más nuevito como CVS. Hoy en dia sin embargo han surgido muchas alternativas, sobre todo en el mundo libre y pensando en grupos de trabajo con integrantes distantes físicamente: subversion, mercurial, darcs, bazaar, etc. En una
publicación del blog de Ian Clatworthy se encuentran algunos elementos para tomar en cuenta a la hora de tomar una decisión. En el desenlace final, Ian nos muestra una preferencia clara, pero si uno se hace al de la vista gorda, en el post se puede encontrar elementos más generales para analizar y aprender las características de estas útiles herramientas, sobre todo de cara al futuro.
Comentarios
Tienes razón es indudable que para el desarrollo de software (aunque no es excluyente) siempre es necesario utilizar un sistema de control de versiones. Incluso si trabajas sólo, aunque a este último método le llaman generalmente Local VCS.
A la lista que mencionas, yo le añadiría el HCV (Human Control Version), de seguro ha sido el que ha dado lugar al nacimiento de los modernos sistemas de control de versiones que ahora tenemos a nuestro alcance.
En que consiste?
Bueno, he visto como se trabaja con eso en una empresa de desarrollo de software en la que estuve por corto tiempo, va de la siguiente forma:
Lo anterior es verídico, claro que no puedo dar nombres, por razones obvias. Me imagino que a estas alturas ellos habrán dejado su HCV y migrado a sistemas de control de versiones mas modernas ;-)
Algo que viene al caso, que vcs distribuido es más distribuido: http://changelog.complete.org/posts/528-Whose-Distributed-VCS-Is-The-
Aunque no soy programador profesional, uso el control de versiones para muchas cosas... incluso archivo de configuración. Desde que conocí mercurial hace tiempo ya no lo cambio por nada, un motivo importante es que el branching es cheap (barato?), osea que ocupa muy poco espacio. Esto es importante, por ejemplo el repositorio ajayu son más de 100Mb y existen proyectos usando mercurial de más de 1Gb.
Para el caso de ajayu tengo los siguientes repositorios:
Cuando quiero desarrollar una nueva funcionalidad, o un plugin, entonces hago un clon de elgg_ajayu, luego en caso de ser plugin lo pongo en su propio repositorio, al final lo pruebo bajo elgg_svn para poder enviarlo a elgg.org.
#1 que tortura...