¿Tienes más de 2 personas trabajando en un mismo proyecto? ¿Los programadores machacan su código fuente? ¿Quieres llevar un control de versiones de tu software? Necesitas tener bajo control tu código fuente.
Al principio no hay problemas, tú desarrollas solo, tienes todos los ficheros fuente. Añades, editas, borras ficheros fuente conforme te parece y vas necesitando. Esto funciona bien si el proyecto es pequeño y no tienes necesidad de más programadores.
Pero un día llega el momento en que el proyecto es un poco más grande y están trabajando simultáneamente con los ficheros fuentes 2 o 3 personas, y lo que antes era tan sencillo como editar un fichero fuente se convierte en una pesadilla.
Lo primero que se te ocurre es compartir un directorio en el que todo el mundo puede crear, editar y borrar ficheros a su parecer. A los 10 minutos te das cuenta que eso no funciona, lo más normal es que dos programadores estén editando el mismo fichero fuente y uno de los dos machaque el trabajo del otro, con el consiguiente enfado del perjudicado. Y más vale que esto no ocurra más de una vez porque si no el posible pequeño enfado se puede convertir en represalia y ya te puedes imaginar las consecuencias que esto tiene.
Así que en un alarde de imaginación organizativa decides que cada uno trabaje en su parte, que las partes sean distintas, de forma que nadie necesite editar ficheros que otro esté editando (sniff...) y que si alguien va a editar algún fichero "general" que avise a los demás para que no lo editen al mismo tiempo. No hace falta pensar mucho para darse cuenta que al rato esto nos lleva a la situación del principio, machacándose unos ficheros a los otros.
Primero porque la separación en partes disjuntas no está clara y sobre todo porque cuando tienes que avisar a los demás de que vas a editar un fichero común, a veces se te olvida y no lo haces, o piensas que sólo lo abres para verlo y no vas a tocar nada, pero que luego resulta que si modificas. Así que si tienes más de un programador necesitas que alguien controle el acceso a los fuentes para evitar estos problemas.
Afortunadamente existen herramientas que permiten realizar este control sobre los ficheros fuente. Estas herramientas evitan que nadie machaque código de otro inconscientemente, también permiten saber qué modificó cada programador, guardar versiones anteriores que se pueden recuperar posteriormente, etiquetar conjuntos de ficheros fuente bajo un mismo nombre.
Voy a presentaros algunas opciones para que podáis elegir la que más se ajuste a vuestras necesidades.
- RCS. Revision Control System. Uno de los más antiguos (1980) y también de los más sencillos de usar. Desarrollado para entornos UNIX aunque también está portado a Windows. Recomendado para proyectos no muy complejos en entorno UNIX bajo la misma máquina.
Página oficial y descarga gratuita: http://www.gnu.org/software/rcs/rcs.html - MS Visual SourceSafe. La alternativa Microsoft. Se integra muy bien, como sería de esperar, con las herramientas de desarrollo de Microsoft. Si tu entorno de desarrollo es Microsoft, esta es tu primera opción. Es viejo, feo (estilo W95) y mil veces parcheado, pero es lo que hay. Funciona decentemente bien y no da muchos problemas.
Página oficial: http://msdn.microsoft.com/ssafe/default.asp - CVS. Concurrent Versions System. Posiblemente sea uno de los mejores. Además de hacer lo que los anteriores también puede funcionar como cliente/servidor a través de Internet, puede manejar distintas ramas y realizar mezclas de ellas cuando sea necesario, y otras muchas cosas. Si bien los clientes pueden correr en muchos sistemas operativos de la familia UNIX y de la familia Windows, el servidor ha de estar en un sistema de la familia UNIX. Existen versiones que corren bajo Windows pero recomiendan no usarlas en entornos de producción. Añadir que por su buena integración en Internet, es una de las herramientas más usadas en el desarrollo de proyectos geográficamente distribuidos como puede ser los proyectos de software libre.
Página oficial y descarga gratuita: http://www.cvshome.org/ - IBM Rational ClearCase. El caro. Con estos dos padres IBM y Racional, que más podemos decir. No lo he usado en entornos productivos, pero he estado trasteando con la versión de evaluación y la verdad es que parece muy bueno. Con las capacidades de CVS y además un entorno gráfico amigable. Se integra bien con las herramientas de Microsoft aunque no tan bien como SourceSafe.
Página oficial: http://www.rational.com/products/clearcase/prodinfo.jsp
Asegúrate que tu herramienta de desarrollo se integra bien con tu gestor de código fuente y todo el mundo será feliz. Si no, los desarrolladores se van a quejar y eso significa que no lo usaran y entonces volverás a estar como al principio.