Lihuen
RSSRSS AtomAtom

Diferencia entre revisiones de «Cómo usar SVN»

Línea 1: Línea 1:
 +
==Introducción==
 
SVN es un sistema de control de versiones usado para que varios desarrolladores puedan trabajar en un mismo proyecto en forma más o menos ordenada.
 
SVN es un sistema de control de versiones usado para que varios desarrolladores puedan trabajar en un mismo proyecto en forma más o menos ordenada.
 
Tiene una arquitectura cliente servidor con controles de concurrencia para cuando varios desarrolladores estan trabajando en el mismo archivo y funciona más o menos así.
 
Tiene una arquitectura cliente servidor con controles de concurrencia para cuando varios desarrolladores estan trabajando en el mismo archivo y funciona más o menos así.
Línea 6: Línea 7:
 
Para este documento usaré ~# como indicador de shell de root y ~$ como shell de usuario.
 
Para este documento usaré ~# como indicador de shell de root y ~$ como shell de usuario.
  
Primero, hay que instalar un cliente de svn. En Lihuen eso se puede hacer instalando el paquete subversion desde Synaptic o simplemente corriendo desde una terminal con permisos de root.
+
==Instalando subversion==
 +
Primero, hay que instalar un cliente de svn. En Lihuen eso se puede hacer instalando el paquete ''subversion'' desde Synaptic o simplemente corriendo desde una terminal con permisos de root los siguientes comandos:
 
  ~#apt-get update
 
  ~#apt-get update
 
  ~#apt-get install subversion
 
  ~#apt-get install subversion
Línea 14: Línea 16:
 
Ahora entramos al directorio que creamos recien.
 
Ahora entramos al directorio que creamos recien.
 
  ~$ cd ~/svn
 
  ~$ cd ~/svn
 +
 +
== Haciendo el checout ==
 
Para obtener una copia del trabajo tenemos que conocer la ubicación de un repositorio en internet. Uno bueno para probar es el mismo del proyecto SVN donde podremos obtener una copia del código fuente del mismísimo SVN.
 
Para obtener una copia del trabajo tenemos que conocer la ubicación de un repositorio en internet. Uno bueno para probar es el mismo del proyecto SVN donde podremos obtener una copia del código fuente del mismísimo SVN.
 
Eso se hace de la siguiente manera
 
Eso se hace de la siguiente manera
Línea 20: Línea 24:
 
  ~/svn$ svn checkout http://svn.collab.net/repos/svn
 
  ~/svn$ svn checkout http://svn.collab.net/repos/svn
 
Hay que tener en cuenta que esto puede tardar un buen rato, dependiendo de la velocidad de conección.
 
Hay que tener en cuenta que esto puede tardar un buen rato, dependiendo de la velocidad de conección.
Una ves terminado el proceso de descarga ya podemos empezar a modificar los archivos fuente. Generalmente, un repositorio estandar bien armado publica tres carpetas. Trunk, donde van los cambios principales y el hilo principal de desarrollo, branches, donde se introducen cambios importantes con respecto al desarrollo principal y tags, donde se congelan los cambios para una determinada version. (Esto debería estar mejor explicado en el documento sobre configuraciones del servidor SVN)
+
Una ves terminado el proceso de descarga ya podemos empezar a modificar los archivos fuente. Generalmente, un repositorio estandar bien armado publica tres carpetas. ''Trunk'', donde van los cambios principales y el hilo principal de desarrollo, ''branches'', donde se introducen cambios importantes con respecto al desarrollo principal y ''tags'', donde se congelan los cambios para una determinada version. (Esto debería estar mejor explicado en el documento sobre configuraciones del servidor SVN)
 
A medida que introducimos modificaciones, por ejemplo en la rama trunk, el estado de nuestra copia con respecto al repositorio original cambia. Podemos ver el estado de la copia de trabajo con el subcomando status
 
A medida que introducimos modificaciones, por ejemplo en la rama trunk, el estado de nuestra copia con respecto al repositorio original cambia. Podemos ver el estado de la copia de trabajo con el subcomando status
 
  ~/svn$ cd svn
 
  ~/svn$ cd svn

Revisión de 13:21 25 oct 2007

Introducción

SVN es un sistema de control de versiones usado para que varios desarrolladores puedan trabajar en un mismo proyecto en forma más o menos ordenada. Tiene una arquitectura cliente servidor con controles de concurrencia para cuando varios desarrolladores estan trabajando en el mismo archivo y funciona más o menos así. En algún servidor se monta un repositorio SVN. En este lugar se van a registrar los cambios (revisiones) y los logs que se vayan generando. El cliente de SVN se baja una copia local de alguna revisión (generalmente la última), el desarrollador hace los cambios y los sube al servidor para que esten disponibles para los otros desarrolladores (además de generar un log con un comentario de que cosa modifico, para que, etc, etc, etc). La parte de configuración y puesta en marcha del servidor la dejo para otro documento y vamos a la parte importante, como usar el cliente de svn (desde la terminal). Para este documento usaré ~# como indicador de shell de root y ~$ como shell de usuario.

Instalando subversion

Primero, hay que instalar un cliente de svn. En Lihuen eso se puede hacer instalando el paquete subversion desde Synaptic o simplemente corriendo desde una terminal con permisos de root los siguientes comandos:

~#apt-get update
~#apt-get install subversion

Una ves que tengamos instalados y configurados estos paquetes, creamos una carpeta en nuestro $HOME donde guardaremos nuestra copia local del repositorio.

~$ mkdir /$HOME/svn

En este ejemplo, si el usuario es pepito, mkdir creara un directorio en /home/pepito/ llamado svn. Ahora entramos al directorio que creamos recien.

~$ cd ~/svn

Haciendo el checout

Para obtener una copia del trabajo tenemos que conocer la ubicación de un repositorio en internet. Uno bueno para probar es el mismo del proyecto SVN donde podremos obtener una copia del código fuente del mismísimo SVN. Eso se hace de la siguiente manera

~/svn$ svn co http://svn.collab.net/repos/svn

El subcomando co tiene el mismo efecto que(de hecho, es un alias para) el subcomando checkout, asi que es lo mismo que poner

~/svn$ svn checkout http://svn.collab.net/repos/svn

Hay que tener en cuenta que esto puede tardar un buen rato, dependiendo de la velocidad de conección. Una ves terminado el proceso de descarga ya podemos empezar a modificar los archivos fuente. Generalmente, un repositorio estandar bien armado publica tres carpetas. Trunk, donde van los cambios principales y el hilo principal de desarrollo, branches, donde se introducen cambios importantes con respecto al desarrollo principal y tags, donde se congelan los cambios para una determinada version. (Esto debería estar mejor explicado en el documento sobre configuraciones del servidor SVN) A medida que introducimos modificaciones, por ejemplo en la rama trunk, el estado de nuestra copia con respecto al repositorio original cambia. Podemos ver el estado de la copia de trabajo con el subcomando status

~/svn$ cd svn
~/svn/svn$ svn status
A    svn/trunk/subversion/tests/cmdline/svneditor.bat
M    svn/trunk/subversion/tests/cmdline/import_tests.py
!    svn/trunk/subversion/tests/cmdline/svnadmin_tests.py
?    svn/trunk/subversion/tests/cmdline/log_tests.py
D    svn/trunk/subversion/tests/cmdline/special_tests_data
C    svn/trunk/subversion/tests/cmdline/special_tests_data/bad-special-type.dump

Y asi. Los códigos de la izquierda son los indicadores de estado, y se pueden ver con

~/svn$ svn help status

Los pasteo aqui como referencia los más reelevantes.

     ' ' no hay modificaciones
     'A' Agregado
     'C' Presenta conflicto
     'D' Eliminado
     'I' Ignorado
     'M' Modificado
     'R' Reemplazado
     'X' Este ítem no está versionado, pero es usado por una
         definición de externals
     '?' el ítem no está bajo control de versiones
     '!' ítem faltante (removido por un comando ajeno a svn) o incompleto
     '~' ítem versionado obstruido por algún otro ítem de un tipo diferente
     'L' Copia bloqueada
 
La información de actualización aparece en la octava columna (con -u):
     '*' hay una nueva revisión en el servidor
     ' ' la copia de trabajo está actualizada

Los campos restantes son de ancho variable y están delimitados por espacios:
   La revisión de trabajo (con -u o -v)
   La ultima revisión que se hizo commit y su autor(con -v)
   La ruta de copia de trabajo siempre es el último campo, para que
   pueda contener espacios en blanco.

Eso nos introduce al subcomando help. Con

~/svn$ svn help subcomando

Podremos ver la ayuda para el subcomando subcomando