Sistemas de Control de Versiones Libres Estos son todos los sistemas de control de versiones de código abierto de los que soy consciente a mediados de 2007. El único que uso frecuentemente es Subversion. Poseo poca experiencia o ninguna con la mayoría de estos sistemas, excepto con Subversion y CVS; la información de aquí ha sido tomada de sus sitios web. Ver también . <emphasis role="bold">CVS</emphasis> — <ulink url="http://www.nongnu.org/cvs/"/> CVS ha estado durante mucho tiempo, y muchos desarrolladores están ya familiarizados con él. En su día fue revolucionario: fue el primer sistema de control de versiones de código abierto con acceso a redes de área amplia para desarrolladores (que yo sepa), y el primero que ofreció ""checkouts"" anónimos de sólo lectura, los que dieron a los desarrolladores una manera fácil de implicarse en los proyectos. CVS sólo versiona ficheros, no directorios; ofrece ramificaciones, etiquetado, y un buen rendimiento en la parte del cliente, pero no maneja muy bien ficheros grandes ni ficheros binarios. Tampoco soporta cambios atómicos. [Descargo: he estado activo en el desarrollo de CVS durante cinco años, antes de ayudar a empezar el proyecto Subversion para reemplazarlo.] <emphasis role="bold">Subversion</emphasis> — <ulink url="http://subversion.tigris.org/"/> Subversion fue escrito ante todo para reemplazar a CVS—es decir, para acceder al control de versiones aproximadamente de la misma manera que CVS lo hace, pero sin los problemas o falta de utilidades que más frecuentemente molestan a los usuarios de CVS. Uno de los objetivos de Subversion es encontrar la transición a Subversion relativamente suave para la gente que ya está acostumbrada a CVS. Aquí no hay sitio para entrar en detalles sobre las características de Subversion; acceda a su sitio web para más información. [Descargo: Estoy implicado en el desarrollo de Subversion, y es el único de estos sistemas que uso habitualmente.] <emphasis role="bold">SVK</emphasis> — <ulink url="http://svk.elixus.org/"/> Aunque se ha construido sobre Subversion, probablemente SVK se parece más a algunos de los anteriores sistemas descentralizados que a Subversión. SVK soporta desarrollo distribuido, cambios locales, mezcla sofisticada de cambios, y la habilidad de ""reflejar/clonar"" árboles desde sistemas de control de versiones que no son SVK. Vea su sitio web para más detalles. <emphasis role="bold">Mercurial</emphasis> — <ulink url="http://www.selenic.com/mercurial/"/> Mercurial es un sistemas de control de versiones distribuido que ofrece, entre otras cosas, "una completa ""indexación cruzada"" de ficheros y conjutos de cambios; unos procotolos de sincronización SSH y HTTP eficientes respecto al uso de CPU y ancho de banda; una fusión arbitraria entre ramas de desarrolladores; una interfaz web autónoma integrada; [portabilidad a] UNIX, MacOS X, y Windows" y más (la anterior lista de características ha sido parafraseada del sitio web de Mercurial). <emphasis role="bold">GIT</emphasis> — <ulink url="http://git.or.cz/"/> GIT es un proyecto empezado por Linus Torvalds para manejar el arbol fuente del ""kernel"" de Linux. Al principio GIT se enfocó bastante en las necesidades del desarrollo del ""kernel"", pero se ha expandido más allá que eso y ahora es usado por otros proyectos aparte del ""kernel"" de Linux. Su página web dice que está "... diseñado para manejar proyectos muy grandes eficaz y velozmente; se usa sobre todo en varios proyectos de código abierto, entre los cuales el más notable es el ""kernel"" de Linux. GIT cae en la categoría de herramientas de administración de código abierto distribuído, similar al, por ejemplo, GNU Arch o Monotone (o bitKeeper en el mundo comercial). Cada directorio de trabajo de GIT es un repositorio completo con plenas capacidades de gestión de revisiones, sin depender del acceso a la red o de un servidor central." <emphasis role="bold">Bazaar</emphasis> — <ulink url="http://bazaar.canonical.com/"/> Bazaar está todavía en desarrollo. Será una implementación del protocolo GNU Arch, mantendrá compatibilidad con el procotolo GNU Arch a medida que evolucione, y trabajará con el proceso de la comunidad GNU Arch para cualquier cambio de protocolo que fuera requerido a favor del agrado del usuario. <emphasis role="bold">Bazaar-NG</emphasis> — <ulink url="http://bazaar-ng.org/"/> Bazaar-NG (o bzr) está actualmente siendo desarrollado por Canonical (). Ofrece la elección entre el trabajo centralizado y el descentralizado dentro de un mismo proyecto. Por ejemplo, cuando en la oficina uno puede trabajar en una rama central compartida; para cambios experimentales o trabajo desconectado, se puede crear una rama en el portátil y mezclarla más tarde. <emphasis role="bold">Darcs</emphasis> — <ulink url="http://abridgegame.org/darcs/"/> "El Sistema Avanzado de Control de Revisión de David (David's Advanced Revision Control System) es aún otro reemplazo de CVS. Está escrito en Haskell, y se ha usado en Linux, MacOX, FreeBSD, Open BSD y Microsoft Windows. Darcs incluye un archivo de comandos cgi, el cual puede ser usado para ver los contenidos de su repositorio. <emphasis role="bold">Arch</emphasis> — <ulink url="http://www.gnu.org/software/gnu-arch/"/> GNU Arch soporta tanto desarrollo distribuido como centralizado. Los desarrolladores suben sus cambios a un "archivo", que puede ser local, y los cambios pueden ser metidos y quitados de otros archivos tal y como los administradores de esos archivos vean conveniente. Como toda metodología implica, Arch posee más soporte de mezclado que CVS. Arch tambien permite crear fácilmente ramas de archivos a las cuales uno no tiene acceso para subir cambios. Esto es sólo un breve sumario; para más detalles vea las páginas web de Arch. <emphasis role="bold">monotone</emphasis> — <ulink url="http://www.venge.net/monotone/"/> "monotone es un sistema de control de versión distribuido libre. Ofrece un almacén simple de version transacional de un solo fichero, con una operación completa de desconexión y un protocolo de sincronización entre iguales ""peer-to-peer"" eficiente. Comprende el mezclado susceptible al historial, ramas ligeras, revisión de código integrado y pruebas de terceros. Usa nombrado criptográfico de versión y certificados de cliente RSA. Posee un buen soporte de internacionalización, no tiene dependencias externas, se ejecuta en Linux, Solaris, OSX, y windows, y está licenciado bajo la GNU GPL." <emphasis role="bold">Codeville</emphasis> — <ulink url="http://codeville.org/"/> "¿Por qué otro sistema de control de versión? Todos los sistemas de control de versión requieren que se mantenga una gestión cuidadosa de las relaciones entre ramas con tal de no tener que mezclar repetidamente los mismos conflcitos. Codeville es mucho más anárquico. Permite actualizar o subir cambios a cualquier repositorio en cualquier momento sin innecesarias re-mezclas." "Codeville funciona creando un identificador para cada cambio que sea relizado y recordando la lista de todos los cambios que se han aplicado a cada fichero y el último cambio que modificó cada línea de cada fichero. Cuando hay un conflicto, lo comprueba para ver si una de las dos partes se ya ha sido aplicado a la otra, y si es así hace a la otra automáticamente ganadora. Cuando hay un conflicto de versión real que no se puede mezclar automáticamente, Codeville se comporta de una manera casi exacta que CVS." <emphasis role="bold">Vesta</emphasis> — <ulink url="http://www.vestasys.org/"/> "Vesta es un sistema portátil SCM [Administrador de Configuración de Software o Software Configuration Management] orientado a apoyar el desarrollo de sistemas de software de casi cualquier tamaño, desde bastante pequeños (menos de 10.000 líneas de código fuente) hasta muy grandes (10.000.000 líneas de código fuente)." "Vesta es un sistema maduro. Es el resultado de más de 10 años de investigación y desarrollo en el Centro de Desarrollo de Sistemas Compaq/Digital, y ha estado en uso productivo por el grupo de microprocesador Alpha de Compaq durante más de dos años y medio. El grupo Alpha tuvo más de 150 desarrolladores activos en dos sitios a miles de millas de distancia el uno del otro, en la costa este y en la oeste de los Estados Unidos de América. El grupo usó Vesta para administrar ""builds"" con a lo sumo 130 MB de datos fuente, cada uno produciendo 1,5 GB de datos derivados. Las ""builds"" hechas en la parte oeste de media en un día producieron 10-15 GB de datos derivados, todos administrados por Vesta. Aunque Vesta se diseñó teniendo en mente el desarrollo de software, el grupo Alpha demostró la flexibilidad del sistema usándolo para el desarrollo de hardware, comprobando los ficheros en lenguaje de descripción de su hardware dentro de la facilidad de control de código fuente de Vesta y contruyendo simuladores y otros objetos derivados con el ""constructor"" de Vesta. Los miembros del ex-grupo Alpha, ahora parte de Intel, hoy continuan usado Vesta en el proyecto de un nuevo microprocesador." <emphasis role="bold">Aegis</emphasis> — <ulink url="http://aegis.sourceforge.net/"/> "Aegis es un sistema de administración de configuración de software basado en transacciones. Proporciona un marco dentro del que un equipo de desarrolladores puede trabajar en muchos cambios de un programa independientemente, y Aegis coordina la integración de esos cambios dentro del código fuente maestro del programa, con el menor transtorno posible." <emphasis role="bold">CVSNT</emphasis> — <ulink url="http://cvsnt.org/"/> "CVSNT es un sistema de control de versión multiplataforma avanzado. Compatible con el protocolo estándar CVS de industria ahora soporta muchas más características... CVSNT es Código Abierto, software libre licenciado bajo la Licencia Pública General GNU." Su lista de características incluye autentificación via todos los protocolos estándar de CVS, más SSPI y Directorio Activo específicos de Windows; soporte de transporte seguro, vía sserver o SSPI encriptada; plataformas cruzadas (corre en entornos Windows o Unix); la versión NT está totalmente integrada con el sistemas Win32; el proceso MergePoint significa no tener que mezclar etiquetas más; bajo desarrollo activo. <emphasis role="bold">META-CVS</emphasis> — <ulink url="http://users.footprints.net/~kaz/mcvs.html"/> "Meta-CVS es un sistema de control de versión construído alrededor de CVS. Aunque conserva la mayoría de las características de CVS, incluyendo todo el soporte de red, tiene más capacidad que CVS, y es más fácil de usar." Las características listadas en el sitio web de META-CVS incluyen: versionado de estructura de directorio, manejo de tipos de ficheros mejorado, mezclado y ramificado más simple y más fácil de usar, soporte para enlaces simbólicos, listas de propiedad adjuntadas a los datos versionados, importación mejorada de datos de terceros, y actualización sencilla desde las existentes en CVS. <emphasis role="bold">OpenCM</emphasis> — <ulink url="http://www.opencm.org/"/> "OpenCM está diseñado como un reemplazo seguro y de alta integridad de CVS. Se puede encontrar una lista de las características clave en la página de características. Aun cuando no es tan 'rico en características' como CVS, soporta algunas funcionalidades útiles de las que carece CVS. En pocas palabras, OpenCM proporciona soporte de primera clase para renombrado y configuración, autentificación criptográfica y control de acceso, y ramas de primera clase." <emphasis role="bold">Stellation</emphasis> — <ulink url="http://www.eclipse.org/stellation/"/> "Stellation es un sistema avanzado y extensible de administración de configuración de software, originalmente desarrollado por IBM Research. Mientras que Stellation proporciona todas las funciones estándar disponibles en cualquier sistema SCM, se distingue por un número de características avanzadas, tales como administración de cambios orientada a tarea, versionado consistente de proyectos y ramificación ligera, destinado para facilitar el desarrollo de sistemas software por grupos grandes de desarrolladores coordinados líbremente." <emphasis role="bold">PRCS</emphasis> — <ulink url="http://prcs.sourceforge.net/"/> "PRCS, el Sistema de Control de Revisión de Proyecto (Project Revision Control System), es la interfaz de un conjunto de herramientas que (como CVS) proporcionan una manera de tratar con conjuntos de ficheros y directorios como una entidad, preservando versiones coherentes del conjunto entero... Su propósito es similar al de SCCS, RCS, y CVS, pero (al menos según sus autores), es mucho más simple que cualquiera de aquellos sistemas." <emphasis role="bold">ArX</emphasis> — <ulink url="http://www.nongnu.org/arx/"/> ArX es un sistema de control de versión distribuído que ofrece características de ramificación y mezcla, verificarión criptográfica de integridad de datos, y la capacidad de publicar archivos fácilmente en cualquier servidor HTTP. <emphasis role="bold">SourceJammer</emphasis> — <ulink url="http://sourcejammer.org/"/> "SourceJammer es un sistema de versionado y control de código fuente escrito en Java. Consiste en un componente en la parte del servidor que mantiene el historial de la versión y de los ficheros manejando subidas , descargas, etc, y otros comandos; y otor componente en la parte del cliente que hace peticiones al servidor y administra ficheros en el sistema de ficheros del cliente." <emphasis role="bold">FastCST</emphasis> — <ulink url="http://www.zedshaw.com/projects/fastcst/index.html"/> "Un sistema 'moderno' que usa conjuntos de cambios sobre revisiones de ficheros, y operacion distribuída más que control centralizado. Siempre y cuando se posea una cuenta de correo electrónico se puede usar FastCST. Para distribuciones más grandes sólo se necesita un servidor FTP y/o un servidor HTTP para usar el comando incorporado 'serve' para servir directamente las cosas. Todos los conjuntos de cambios son únicos universalmente y tienen toneladas de meta-datos, por lo que se puede rechazar cualquier cosa que no se [quiera] antes de intentarlo. La mezcla es hecha comparando un conjunto de cambios mezclado con los contenidos del directorio actual, más que intentar mezclarlo con otro conjunto de cambios." <emphasis role="bold">Superversion</emphasis> — <ulink url="http://www.superversion.org/"/> "Superversion es un sistema de control de versión distribuído multi-usuario basado en conjuntos de cambios. Apunta a ser una alternativa de código abierto con peso en la industria frente a soluciones comerciales, el cual es igual de fácil de usar (o inclusive más fácil) y con una potencia similar. De hecho, la utilización intuitiva y eficiente ha sido una de las máximas prioridades en el desarrollo de Superversion desde los comienzos."