Desde hace tiempo he querido dedicar un poco de mi tiempo a aprender subversion,. Finalmente, el dia de hoy, me he puesto a aprender como utilizarlo, asi que quisiera compartirlo con ustedes 🙂
Que es Subversion?
Subversion es un software de sistema de control de versiones de codigo abierto y gratuito.
Subversion maneja ficheros y directorios a través del tiempo. Hay un árbol de ficheros en un repositorio central. El repositorio es como un servidor de ficheros ordinario, excepto porque recuerda todos los cambios hechos a sus ficheros y directorios. Ésto le permite recuperar versiones antiguas de sus datos, o examinar el historial de cambios de los mismos. En este aspecto, mucha gente piensa en los sistemas de versiones como en una especie de “máquina del tiempo ”.
Y si no me gusta Subversion?
Cuando se habla de control de versiones, generalmente sale escucharas de CVS. Sin embargo, este sistema, mucho mas antiguo, ha pasado a ser bastante obsoleto (y por mi experiencia, es mucho mas complejo). De hecho, Subversion fue diseñado para solucionar los problemas de CVS, siendo una opcion mas actual, facil, completa y flexible.
De seguro solo corre en linux?
No, un servidor Subversion puede ser instalado bajo linux, Mac OSX o Windows. Asi que no hay que preocuparse, hay de todos los sabores y colores. De hecho, puede ser instalado como un modulo de Apache (servidor web) o como un servicio independiente, accesible a traves de varios protocolos (http://, https://, svn://, file:///, entre otros).
Algo mas que deba saber?
Sip, este sistema no solo controla cambios de archivos de texto (como .php, .as, .js, .css, .html, y cualquier otro que te imagines) sino tambien, es bastante efectivo con archivos binarios (como .fla, .jpg). Es una ventaja que tiene frente a CVS.
Y a mi de que me sirve?
Si eres un programador, o diseñador, sabras que un proyecto no se realiza en una sola tanda. Lo haces, y el cliente querra cambios, los realizas, y el cliente quiere mas cambios. Como todos los clientes estan locos, generalmente no gustan de algunos cambios y requieren que hagas cambios de una version anterior de tu proyecto. Es por eso, que siempre resulta necesario guardar todas las versiones de tu proyecto. La manera mas ‘facil’ es guardar los archivos bajo distintos nombres. Sin embargo, te daras cuenta despues de unos dias que tienes 50 archivos del mismo proyecto, cada uno representando una version distinta. Lo peor, es que con tanto archivo pierdes la cuenta de las diferencias que hay entre una version y otra. Se complica mas aun si trabajas en equipo, y cada persona tiene una version distinta de un archivo del proyecto (ya sea un script, una pagina html, un archivo psd). Cuando comienzan a surgir estos problemas, viene al rescate el sistema de control de versiones.
Con Subversion puedes ir guardando los archivos en un repositorio, cada vez que hagas algun cambio, y los mandes al repositorio, puedes describir los cambios que has hecho, y el sistema ademas asigna una version (revision) a los cambios realizados. Si trabajas en equipo, cualquier miembro de tu grupo podra bajar los ultimos archivos, y subir nuevos cambios. Asi todo se mantiene mucho mas organizado. Y en caso de que hayas trabajado en un archivo por dos semanas, cambiandolo varias veces, pero por alguna razon necesites el archivo original nuevamente, solo tienes que ‘bajar’ del servidor la version que necesites.
Me hago entender? en pocas palabras, con Subversion no necesitas tener en tu pc 20 versiones distintas del mismo archivo. Solo es necesaria la version en la que trabajas actualmente, y cuando necesites una version anterior, solo la pides del servidor. Listo. Es cuestion de organizacion.
Generalmente este sistema es mas utilizado cuando estas desarrollando software, mas que nada, si trabajas con un equipo de desarrolladores. Es por eso que tu puedes bajarte la version beta de firefox, o la 1.5, o de hecho, la version en la que estaban trabajando hasta ayer (conocidas como nightly builds). Solo dale un vistazo al servidor ftp de mozilla. Con un buen sistema de control de versiones, ellos pueden seguir corrigiendo bugs en versiones anteriores (o ramas), mientras trabajan en la actual, o en futuras versiones, sin que todo se vuelva una sola masa confusa de archivos.
Claro, veras muchas mas ventajas en este sistema si desarrollas software. Pero mientras utilices una computadora, y trabajes en archivos que sean modificados ya sea rara vez o constantemente, te daras cuenta que siempre resulta de utilidad un sistema que te permita volver a versiones anteriores. Un ejemplo mas mundano: escribes un poema a tu novia. Al dia siguiente se pelean, asi que lo borras y escribes una carta llena de odio, pero despues de dos dias te das cuenta que la amas. Necesitas el poema de vuelta. Gracias al cielo, registraste los cambios de tu carta (realizada en notepad) en tu servidor Subversion, asi que solo necesitas bajarte la version ‘amorcito corazon 1.3 beta’. Tu poema no se perdio.
Me gusta la idea, que necesito para empezar?
Necesitas un servidor y un cliente. En windows, puedes empezar bajandote los binarios (y aqui tienes una lista para los demas sistemas operativos).
Si instalas el servidor en la misma maquina en la que trabajas, no necesitas mas, pues Subversion puede ser utilizado desde la linea de comandos. Sin embargo, si prefieres una interface grafica, puedes trabajar con TortoiseSVN, un cliente SVN que trabaja con windows explorer, para hacer tu vida con este sistema un placer y no un suplicio.
Quiero saber mas y mas
Hay un libro esencial: Control de versiones con Subversion, publicado por O’Reilly. Puedes comprarlo, aunque esta disponible de manera gratuita (aqui). Aunque esta en ingles, puedes visitar esta otra pagina con la traduccion (en progreso) al español.
Ma links? puedes visitar la pagina oficial del proyecto, o un tutorial en español. Si te animas, hay un tutorial en ingles, y otro que te guia como instalarlo y comenzar a trabajar.
Conclusion
Espero que con este articulo les haya despertado la curiosidad. Como yo estoy aprendiendo, seguire posteando sobre las cosas que vaya descubriendo, y cuando tenga un poco mas de tiempo, por supuesto, vendra una pequeña guia para instalarlo y utilizarlo.
Muy util, estaba buscando información en español y con google he llegado hasta aquí y es de momento donde mas claro me ha quedado 😀
Hola… me gustaria saber que caracteristicas debiera tener un servidor subversion en cuanto a máquina (hardware) y si es verdad que se recomienda como S.O de este servidor a Linux sobre Windows.
saludos
Excelente explicacion de Subversion!!!! muchas felicidades 🙂
Empiezas a salvarme la vida… Voy ya a por la parte 2 de este post!!
Thanks!
Hola, si queréis más información, hay un foro en rediris orientado a la resolución de problemas y ayuda con SCP.
Lo he ido construyendo con las experiencias que he ido teniendo, por ahora sirve para completar mejor la información que el blog innocuo nos ofrece tan claramente 🙂
https://forja.rediris.es/forum/forum.php?forum_id=810
Lo que si me gustaría saber es cuando el IDE eclipse traerá soporte por defecto para SVN …
Saludos!
Excelente publicación. muy clara. me ayudó mucho. Gracias