miércoles, 9 de mayo de 2012

Tutorial del uso de Subversion parte 1

En este tutorial haremos una explicación sobre Subversion en sí este te permite administrar proyectos complejos desde una sola persona a muchas personas, ahora según wikipedia:

"Subversion es un sistema de control de versiones, software libre bajo una licencia de tipo Apache/BSD y se le conoce también como svn por ser el nombre de la herramienta utilizada en la línea de comando.

Una característica de Subversion es que todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en un instante determinado del repositoro que se esta trabajando. Se puede acceder al repositorio a través de redes, lo que le permite ser usado por personas que se encuentran en distintas computadoras y con la posibilidad de que varias personas puedan modificar y administrar el mismo conjunto de datos desde sus respectivas ubicaciones fomenta la colaboración."

Ahora que hemos entendido que es un Subversion nos iremos a nuestra terminal y teclearemos:

svn --version
 
Esto nos sirve para saber si tenemos instalado el Subversion y sí es así, que version tenemos.

En caso de no tenerlo instalado debemos de teclear los siguiente.
Para Mac OS X:
  
      Con MacPorts
         sudo port install subversion
       Con Fink
       sudo fink install svn-client
Para Ubuntu:
                                                               sudo apt-get install subversion

Para comenzar a crear un repositorio e inicializarlo necesitamos hacer lo siguiente.

mkdir /var/share/svn/Repositorio

svnadmin create /var/share/svn/Repositorio

En la cual creamos una carpeta llamada Repositorio, para después crear con los comandos de Subversion un nuevo repositorio para nuestro sistema de control de versiones.Tiene que estar dentro de /var/share/~ para que este pueda ser compartido con los usuarios.

Una vez hecho lo anterior pasaremos a modificar dentro de la carpeta creada encontraremos otra carpeta llamada conf, donde encontraremos a svnserve.conf el cual descomentaremos lo siguiente.

anon-access=read                    //Acceso anónimo con permiso a lectura
auth-access=write                   //Acceso de autentificación con permiso a escritura
realm= My First Repository  //Nombre del repositorio
password-db=passwd            //Toma password de default


Con lo visto, tenemos que resaltar que ya no es necesario entrar a esta carpeta, ya que existe un comando llamado svn checkout que nos importa en una carpeta que hayamos creado un proyecto, esto lo veremos mas adelante.

Subversion usa los directorios como unidad básica de organización, el cual divide el repositorio en diferentes proyectos.Por conveniencia todas las subversiones de los proyectos deben de tener directorios llamados trunk(tronco), tags(etiquetas) y branches(ramas).Como por ejemplo:
  • /Proyecto1/trunk
  • /Proyecto1/tags
  • /Proyecto1/branches
  • /Proyecto2/trunk
  • /Proyecto2/tags
  • /Proyecto2/branches
Donde trunk es un directorio donde se hacen todas las acciones principales del desarrollo y es el directorio que vas a verificar si tu quieres trabajar en el proyecto.

El directorio tags es usado para capturar pequeñas capturas del proyecto, por ejemplo cuando liberan una nueva producción de algún tipo de componente, el equipo etiquetará el código que será liberado.Esto ayuda al equipo  cuando encuentra un error en el código y encontrar la posible solución a ello.

El directorio branches es usado cuando quieres seguir diferentes líneas de desarrollo, el desarrollo en esta carpeta se centra en el desarrollo estable mientras que en la carpeta de trunk se utiliza para desarrollo de nuevas funciones.

Para crear un directorio base para nuestro proyecto hacemos lo siguiente.

svn mkdir /usr/share/svn/proyecto

Para crear las carpetas trunk, tags y branches.


  svn mkdir /usr/share/svn/proyecto/trunk

svn mkdir /usr/share/svn/proyecto/tags

        svn mkdir /usr/share/svn/proyecto/branches

Para importar algún directorio de un proyecto ya existente hacemos esto.

svn import URL o Ruta

Para empezar con una copia de un proyecto hacemos.

svn checkout URL o Ruta

Para ver el estado de cada archivo necesitamos saber que es cada letra de indicación, entre las que tiene Subversion son las siguientes:

A  Se agregó en tu copia de trabajo.
C  Existe un conflicto por un update o una combinación.
Eliminado en tu copia de trabajo.
Combino cambios desde un repositorio
   Ignorado desde tu copia de trabajo.
M  Modificado en tu copia de trabajo.
R   Reemplazado en tu copia de trabajo.
?    No está bajo en control de versiones.
!    Se olvido algo desde tu copia de trabajo o esta incompleto

Para ver que archivos fueron cambiados en tu copia de trabajo.

svn status

*Tienes que estar dentro de la carpeta donde tienes la carpeta de trabajo.

Y veremos algo como esto.


Donde se dice que se agregó hola.py y prueba en la copia de trabajo.

Para ver como nuestros archivos han cambiado.

svn diff

*De igual manera tienes que estar dentro de la carpeta de trabajo.

Y veremos algo como esto.


Donde los "+" indican que se han agregado algunas líneas nuevas al archivo, el "-" indica que han sido removido esas líneas.Sí huvieron cambios severos veremos una gran cantidad de mas y menos.

Ahora para enviar un archivo modificado hacemos lo siguiente.

svn add archivo

*Tenemos que estar en la carpeta de trabajo.

Para hacer un update de las modificaciones hechas hacemos lo siguiente.

svn commit archivo

Y veremos algo como esto.


Para eliminar algún archivo.

svn delete archivo

Y después hacemos un "svn commit archivo" como en lo anterior.


Para renombrar un archivo.

svn mv archivo archivomodificado

Luego de eso hacemos un "svn commit archivo".


Para modificar un archivo.

svn mv ruta/proyecto/algo.py src/app/proyecto/

Y después hacemos un commit.

Para la siguiente semana hablaremos sobre el uso de Rever, Blame, Manejar conflictos y hacer update.

Nominación de la semana:

-Sergio Hernández apoyo moral
-Pedro por su entrada sobre Brenchmarks
-Victor por su intento de Geekbench
-Alex por su explicación de Malla
-Avendaño por su explicación Malla
-Obed por su expliación de PVM

1 comentario: