Archivo para enero 2006
svk
En la línea de la última entrada voy a comentar brevemente un ejemplo de uso / tutorial de svk.
svk está basado en el sistema de ficheros de subversion, está escrito en Perl y cuenta con varias mejoras que le permiten ser un decentralized version control system. Su principal objetivo es permitir a un desarrollador disponer de sus propias ramas privadas facilitando enormemente el proceso de merge.
La situación es la siguiente: disponemos de un repositorio central con un proyecto en el que estamos trabajando. Mediante svk vamos a hacer una copia del repositorio, vamos a mantenerlo actualizado y vamos a crear nuestra propia rama de trabajo.
Sistemas de control de versiones distribuidos
Los sistemas de control de versiones tradicionales como CVS o subversion han facilitado enormemente el desarrollo de software. Los conceptos como repositorio, revisión y commit son de uso habitual en casi cualquier cosa en la que trabajemos pero siempre se puede rizar el rizo: los sistemas de control de versiones distribuidos.
A primera vista los dvcs son simples vcs sin un repositorio centralizado, es decir, disponemos de varios repositorios funcionalmente idénticos pero que pueden seguir líneas de desarrollo propio para más tarde sincronizarse entre ellos. A decir verdad parece una forma rebuscada de hacer copias de seguridad de un repositorio clásico.
Supongamos que estamos trabajando en un proyecto cualquiera cuya política a la hora de aceptar un commit es “no introducir código inestable”. Si queremos implementar un gran cambio tendríamos que desarrollar sin ningún vcs hasta conseguir un código maduro y poder realizar el commit, normalmente no suele ser una situación agradable.
La solución más común es la de crear una rama en la que podamos desarrollar tranquilamente y más tarde, una vez madurado el código, juntar nuestra rama con la línea principal de desarrollo. El inconveniente ahora es la gestión de las ramas –crear y destruir múltiples ramas– y hacer el merge que siempre han resultado ser operaciones complicadas e incómodas.
Este es uno de los motivos por los que Linus Torvalds no migró a subversion después de los problemas con BitKeeper: Please Stop Bugging Linus Torvalds About Subversion.
Los dvcs se centran en este problema. Ofrecen al programador mayor libertad a la hora de compartir su trabajo (ya sea con ramas privadas o controlando los cambios a commitear) sin perder en ningún momento un vcs en el que apoyar su desarrollo. Además disponemos de una copia local del repositorio maestro lo que nos permite trabajar (commit, log, diff…) sin disponer de una conexión permanente.
Algunos ejemplos: