Sistemas de control de versiones
28 de March, 2008
Hace unos meses se me dio por comenzar a utilizar un sistema de control de versiones (Subversion en mi caso) y desde ese momento que no he dejado de utilizarlo. Se me ha convertido en una herramienta imprescindible a la hora de ponerme a picar código y no puedo entender como trabaje tanto tiempo si ella.
¿Qué es un sistema de control de versiones?
Un sistema de control de versiones permite guardar un historial de las modificaciones que van sufriendo los archivos de un proyecto en particular al mismo tiempo que vamos, por decirlo de alguna manera, creando puntos de backup automáticamente (revisiones en realidad).
A continuación van tres situaciones/ejemplos para que se entienda cual es la finalidad de un sistema de control de versiones.
Primer ejemplo: cosa de todos los días
Tengo el siguiente archivo.php:
1 2 3 | < ?php echo "Hello World"; ?> |
Luego se me ha ocurrido agregarle algunos signos de admiración:
1 2 3 | < ?php echo "Hello World!!"; ?> |
Y ahora, he decidido pasarlo a español:
1 2 3 | < ?php echo "¡¡Hola mundo!!"; ?> |
Si ahora quisiera volver a la primer versión del archivo porque me equivoque o simplemente porque mi cliente se arrepintió, ¿qué debería hacer?
Trabajando “a la antigua”, normalmente y solo luego de quejarme y acordarme por lo bajo de lo buen tipo que es mi cliente, hubiera buscado entre mis carpetas de backup el archivo de la primer versión para poder reemplazarlo o, en el peor de los casos, lo hubiera reescrito totalmente.
Ahora bien, el ejemplo es un archivo de 3 lineas y sinceramente seria bastante rápido reescribirlo, pero ¿qué sucede en un proyecto real con 50 archivos de 500 lineas cada uno?
Aquí es donde aparece el sistema de control de versiones. Con un sistema como Subversion podríamos volver a la primer versión del archivo con dos clicks, sin necesidad de buscar entre carpetas de backups y sin vivir con la duda de si sera el archivo/versión correcta.
Segundo ejemplo: trabajando en equipo
Supongamos que tenemos 2 compañeros de trabajo (Juan y Carlos) ayudándonos en un pequeño proyecto de una web. Juan y Carlos se encargan del backend (o administrador de contenidos) y nosotros nos encargamos del FrontEnd (o el sitio en si).
Ahora necesitamos probar el sitio completo y para ello necesitamos los archivos que actualizó Juan y también los que actualizo Carlos para tener la última versión de todo nuestro sistema.
Mientras proyecto no se termine, hacer:
- Preguntarle a Juan que archivos modifico y pedírselos
- Reemplazar mis archivos con los nuevos que me dio Juan
- Preguntarle a Carlos que archivos modifico y pedírselos
- Verificar que Carlos no haya modificado alguno de los archivos que Juan modifico por su cuenta (tendríamos dos versiones distintas del mismo archivo, uno con las modificaciones de Juan y otro con las modificaciones de Carlos)
- Esperar a que Juan se ponga de acuerdo con Carlos a ver que versión del archivo en conflicto me dan
- Finalmente probar
Cansador, verdad?
Si trabajamos con Subversion siempre es éste el que posee la ultima versión de todos los archivos, es el que se encarga de unir lo que nosotros, Juan y Carlos hicimos por separado en nuestras máquinas. Cuando necesitamos probar todo el sistema nos basta solo con pedirle la ultima versión a Subversion y este nos la dará en un segundo y sin quejarse
En el caso de que Juan y Carlos modificaran el mismo archivo, Subversion nos alertaría para que no se perdieran los cambios de uno ni de otro, dándonos la opción de comparar ambos archivos linea a linea (de manera muy practica) y combinarlos de manera que el resultado sea un archivo que contenga los cambios tanto de Juan como los de Carlos.
Finalizando
He planteado solo unas pocas situaciones en las que podría ser útil un sistema como Subversion, pero les aseguro que sobre la marcha surgen muchísimas mas y realmente vale la pena. Desde hace bastante se de la existencia de sistemas de este tipo, pero no me interesaba por aprenderlos a usar porque pensaba que solo eran útiles para equipos de varios programadores… nada mas lejos de la realidad, trabajo solo y como les comentaba al principio, me parece una herramienta imprescindible y su uso un gran paso para crecer como desarrollador.
Por el momento aquí se termina el artículo, solo deseaba tentarlos a investigar y espero que lo hagan. Igual no descarto dedicar alguna de las próximas entradas a una breve explicación sobre como instalar SVN en Windows y dar los primeros pasos.
Popularity: 5% [?]
Otros artículos
10 comentarios en “Sistemas de control de versiones”
Deja tu comentario
El blog funciona con Wordpress y Simpla theme

March 28, 2008 a las 3:48 am
Bastante interesante, tanto para trabajar solo o en equipo
March 28, 2008 a las 2:47 pm
Yo también lo recomiendo, incluso hay un plugin para el eclipse.
April 7, 2008 a las 1:53 pm
Muy buen articulo, y muy buen blog; hacen falta más blog como estos.
Para aportar algo, no hay solo un plugin para eclipse, sino dos y muy buenos los dos para trabajar con SVN.
Subclipse
Subversive
Saludos!
April 21, 2008 a las 10:07 pm
Gracias por sus comentarios/aportes
May 10, 2008 a las 8:40 pm
Puedo recomendarles dos programas muy buenos:
TortoiseSVN
SmartSVN
Un saludo!.
May 13, 2008 a las 8:44 pm
Ey gracias Khronos!
Por casualidad alguno conoce un cliente similar TortoiseSVN pero para Gnome? baje algunos pero no me funcionaron y como en WinXP me acostumbre a TortoiseSVN….
Por ahora creo que usaré los plugins para Eclipse.
June 4, 2008 a las 7:42 pm
Muy buen articulo, pero que de con gusto a poco.
Podrias ampliarlo??
August 30, 2008 a las 11:42 am
Si quedamos con gusto a muy poco, con los conceptos muy basicos de para que sirve, pero si ampliaras un poco mas, y sobre todo como o usas personalmente.
Saludos
January 23, 2009 a las 12:53 am
Hola quetal me podrias informar mas sobre control de versiones, podrias decirnos como se puede crear un servidor para utlizarlo es decir yo traabjo en mi casa colombia y otro compañero en eeuu como podriamos tener un servidor para el SVN muchas gracias espero me ayudes
sebastian80_23@hotmail.com
Muchas gracias
February 18, 2009 a las 2:06 am
Yo también hace algún tiempo me di cuenta de lo que me estaba perdiendo , ahora utilizo SVN para todos los proyectos, además encontré el servicio de http://beanstalkapp.com/ es increíble.
Y eso que ahora estoy viendo http://github.com/ ya que he visto que grandes proyectos se están mudando a ese servicio.