Es un programa muy potente. Tiene muchísimas opciones. Prácticamente se puede hacer con él todo lo imaginable respecto a mantener versiones de programas.
Escenarios
Pongamos que hago un programa y funciona bien. Un día veo una forma de mejorarlo y decido volver a tocarlo. Tengo que tener cuidado porque al cambiar cosas podría estropearlo.
Pongamos que deseo tener una versión estable que es la que funciona, pero ir trabajando con otras versiones de desarrollo. Subversion es lo tuyo.
Pongamos que sobre la versión de trabajo deseo hacer ramas. Osea que me pregunto ¿que pasa si lo hago así? ¿que pasa si lo hago asao? ¿cual es mejor?
Subersion permite tener varias ramas del mismo programa y en cada momento sigues con la que te interesa.
¿Como funciona?
Como dije tiene muchísimas opciones y posibilidades pero para que os vayais aficionando a una herramienta tan estupenda a la hora de programar os pongo lo sencillito para que probeis.
Lo que voy a hacer ahora es crear un repositorio en mi propio home donde iré guardando mis programas. Para hacerlo de forma profesional debería ser otro sitio y tal, pero esas cosas ya las pensareis vosotros. Solo me interesa que veais lo cómodo y útil que es y la cantidad de trabajo que quita.
Primero parece buena idea descargarse subversion porque si no os va a ser un poquillo dificil je je je
Pues como quiero crear un repositorio en mi home me creo un directorio para él.
Citar:
Ahora crear el repositorio de 'proyecto 1
Citar:
Ya está creado el repositorio. Con eso ya podríamos funcionar, pero para aprender bien hagamos tres directorios en el repositorio y así poder mantener una versión estable, una de trabajo y las ramas o posibilidades que querais hacer. Pueden llamarse como quieras pero todo el mundo pone trunk (trabajo) tags (estable) branches (ramas)
Citar:
Con eso hemos creado las tres posibilidades. Normalmente vosotros trabajais con la trunk que es la que se está programando. Cuando teneis algo que ya es estable y no va a tener cambios la pasais a tags y allí se queda para siempre. Con el tiempo quizá haya otra estable y la podreis meter allí también sin perder la primera.
Fijaos esa notación file:///home/usuario/svn/proyecto_1/trunk. Se pueden utilizar muchas notaciones distintas. Esta es la que se usa cuando el repositorio es local pero hay muchas otras posibilidades si está en red o si se accede de forma remota o por apache ... En cada caso se usa una pero nosotros como tenemos el repositorio local siempre usamos esa por ser la mas fácil de entender sin tener que tocar apache ni nada.
Ahora vamos a meter los archivos de lo que tenemos programado que imaginamos que está en el home en una carpeta proyecto_1 en trunk
Citar:
Con eso metemos todo lo que haya en el directorio proyecto_1 en el repositorio. Le ponemos además un comentario para que cuando un día vea muchas versiones y cada una tenga un comentario sepa reconocerlas. Si no le hubiera puesto el -m me habría salido un editor para que escribiera el comentario. Yo escribría el comentario y le daría a grabar y salir.
El caso es que ya tenemos todo nuestro proyecto en trunk. Aún nos queda un paso mas. Hay que "conectar" el directorio de trabajo vuestro donde guardais las cosas y el repositorio. Esto debe hacerse en un directorio vacío en el que queremos sacar del repositorio la versión trunk. Fijaros en el . final que indica que lo deje en el directorio actual
Citar:
Ya está la versión que quiero en mi carpeta y puedo trabajar con ella. Haré los cambios que estime oportunos y cuando termine haré
Y con eso ya se cambian los archivos y todo. Si borré alguno se borra del repositorio. Si añadí alguno se añade.Citar:
Ahora imaginemos que he hecho muchos cambios y deseo guardarlo en una rama por si acaso
Citar:
Ahora tengo la versión en desarrollo y tengo la branche.
Al día siguiente voy a trabajar y se que en el directorio de trabajo tengo lo que hice ayer (que es la branche) y quiero trabajar con la versión en desarrollo.
Pues borro todo lo que hay en esa carpeta
Citar:
Ahora tengo mi versión trunk para trabajar con ella y cuando quiera siempre puedo volver a subirla a trunk con lo que en trunk tendré dos revisiones y podré cada vez operar con cualquiera de ellas.
Si quiero hacer otro proyecto pue hago lo mismo con proyecto_2 y ya está. Parece que he hecho mucho pero no es así. En realidad dos renglones porque en lo que veis ahí he creado un repositorio, le he hecho ramas, le he metido cosas, als he bajado, he versionado, ... normalmente vosotros llegais, os bajais lo que querais y cuando os convenga los subis. También decir que es muy cómodo trabajar por apache pero no quieo hacer esto mas extenso.
FIN:
Puede ser mucho mas complicado porque a menudo se trabaja entre varias personas que tocan el mismo archivo (incluso la misma línea) y hay conflictos, a veces quieres acceder de forma remota a tu subversion, crear un directorio en ese sitio y descargarte una de tus versiones para hacer algo allí ... etc. Esto solo es un intento de que veais que es muy útil y que no muerde.
Solo pediros que lo useis con responsabilidad porque si borrais la carpeta con vuestro trabajo para bajaros algo del repositorio y la cagasteis cuando dejasteis cosas allí pues la habeis cagado bien cagada. No quisiera ser responsable de ello. Es lo mismo que pasa si borras pensando que tienes copia de seguridad y luego resulta que no la tienes.
Por último añadir que hay software para no tener que usar la consola. Los mas populares son kdesvn y rapidsvn. Lo único malo que les veo es que son demasiado buenos y tienen todas las opciones y para alguien que se mete por primera vez con ello se hace un poquillo dificil porque tienes mogollón de opciones alllí.