Software de control de versiones
Definición
El Software de Control de Versiones (VCS) es una herramienta beneficiosa que contribuye al flujo de trabajo colaborativo de un equipo de desarrollo. Es esencial para equipos con múltiples desarrolladores. Cada empresa adopta el VCS que mejor se adapte a su estrategia.
A continuación se presenta una lista de herramientas VCS ampliamente utilizadas.
Git
Git es uno de los softwares de control de versiones más populares disponibles en el mercado actual. Git es un sistema de control de versiones distribuido, rápido y eficiente que es fácil de aprender. Puede manejar proyectos de cualquier tamaño, desde pequeños hasta enormes. Las características distintivas de Git son las siguientes: ramificación local económica, áreas de preparación convenientes y múltiples flujos de trabajo. Es un software gratuito y de código abierto.

Desventajas de Git
A pesar de sus ventajas, Git también tiene algunas desventajas. En primer lugar, en el caso de archivos binarios grandes, el soporte es débil. Las interacciones pueden perder velocidad debido a repositorios grandes que tienen un historial extenso. Además, los comandos son impredecibles.
CVS
CVS (Concurrent Versions System) fue históricamente popular, pero ahora está en gran medida obsoleto, habiendo sido reemplazado por sistemas distribuidos modernos. Ayudó a los desarrolladores a registrar el historial de archivos y documentos. Por defecto, maneja proyectos de tamaño pequeño a mediano, y para soportar proyectos más grandes, debe ser configurado y extendido. Puedes usar CVS en casi todas las plataformas de hardware y sistemas operativos. Es un software gratuito y de código abierto.

Desventajas de CVS
CVS también tiene algunas desventajas. En particular, no verifica la integridad del repositorio de código fuente. No hay soporte para commits y check-outs atómicos, así como para el seguimiento de fusiones y revisiones firmadas.
SVN
SVN (Apache Subversion) es un sistema de control de versiones centralizado que ha sido ampliamente utilizado durante la última década. SVN tiene las siguientes características: directorios versionados, soporte para commits atómicos, seguimiento de fusiones, existencia de copiar, eliminar, mover y renombrar versiones, modelo de repositorio cliente-servidor, metadatos de versión de formato libre, soporte MIME completo, bloqueo de archivos, etc. Es un software gratuito y de código abierto.

Desventajas de SVN
No se almacena la hora de las modificaciones de los archivos, hay algunos problemas con la normalización de nombres de archivo y la falta de soporte para revisiones firmadas.
Mercurial
Mercurial es un software de control de versiones distribuido escrito en Python. Este software de funcionamiento rápido admite proyectos de cualquier tamaño y tipo. Su interfaz es bastante predecible, lo que facilita su aprendizaje. Admite los siguientes sistemas operativos: Unix-like, Windows y macOS. Admite fuertemente archivos binarios y tiene excelentes capacidades de fusión y ramificación. Es un software gratuito y de código abierto.

Desventajas de Mercurial
Se requiere Python para todos los complementos. No permite check-outs parciales y no maneja bien las extensiones adicionales.
Monotone
Monotone es un sistema de control de versiones distribuido escrito en C++. Es un VCS transaccional de un solo archivo que proporciona operación completamente desconectada. La fusión es sensible al historial y las ramas son bastante ligeras.
Monotone admite una sincronización peer-to-peer productiva. Comprende la fusión sensible al historial, requiere un mantenimiento bajo, valora la integridad de la revisión de código y admite fusiones de tres vías. Se ejecuta en varias plataformas: Linux, Solaris, Mac OS X, Windows y otros Unix. Es un software gratuito y de código abierto.

Desventajas de Monotone
Los usuarios no pueden realizar un checkout o un commit desde detrás de un proxy debido a la ausencia del protocolo HTTP. Se observan problemas de rendimiento para operaciones específicas. El más obvio de ellos es el pull inicial.
Nota: Monotone está en gran medida abandonado y tiene una relevancia moderna limitada.
Práctica
¿Cuál de estas no es una característica de Git como software de control de versiones?