Subversion
From Manual
Contents |
[edit] ¿Qué es SVN?
Subversion es un sistema de control de versión. Subversion maneja archivos y directorios en el tiempo.
Dichos archivos son puestos en un repositorio central. Este repositorio es como un servidor de archivos ordinario, con la salvedad de que recuerda todos los cambios realizados en los archivos y directorios que aloja. Esto permite mantener un historial de los cambios realizados en dichos archivos, y volver a versiones anteriores, en el caso de que sea necesario. Subversion tiene la posibilidad de ser accedido remotamente.
[edit] Características
- Directory versioning: Subversion solamente graba el historial de los cambios en los archivos, pero crea un filesystem virtual que graba también los cambios hechos en directorios.
- True version history: Subversion permite agregar, copiar, borrar y renombrar archivos y directorios, no como los sistemas CVS que no soportan dichas operaciones.
- Atomic commits: Es una colección de modificaciones que permiten prevenir problemas que pueden ocurrir al momento de la sincronización de los archivos.
- Versioned metadata: Los archivos y directorios tienen propiedades asociadas a ellos, con versioned metadata se puede controlar estas propiedades como gustes.
- Choice of network layers: Subversion se "engancha" a Apache como un modulo. Esto da grandes ventajas, como la posibilidad de usarlo con SSH.
- Consistent data handling: Subversion expresa la diferencia entre los archivos usando algoritmos binarios diferenciales, que trabajan idénticamente para archivos de texto o binarios.
- Hackability: Subversion es extremadamente manipulable por distintas aplicaciones y lenguajes de programación.
[edit] Arquitectura
[edit] Componentes
- svn: programa cliente (linea de comando)
- svnversion: programa que reporta el estado de la copia de subversion
- svnlook: herramienta para inspeccionar el repositorio del subversion
- svnadmin: herramienta para crear, reparar, etc. el repositorio de subversion
- svndumpfilter: herramienta para realizar filtrados en el repositorio de subverion
- mod_dav_svn: modulo para apache, que permite acceso remoto
- svnserve: deamon invocado por ssh
[edit] QuickStart (local)
Para empezar podemos llamar al comando más importante de svn:
| # CODE : bash | |
| $ svn help $ svn help <command> (para ver la ayuda de determinado comando) |
|
Para crear un nuevo repositorio:
| # CODE : bash | |
| $ svnadmin create /path_repositorio $ ls /path_repositorio |
|
(hay que estar seguro de que este directorio se encuentra en el disco local, y no un es un directorio compartido de la red)
Este nuevo directorio contiene una colección de archivos Berkeley DB.
El paso siguiente es crear un árbol de archivos y directorios para importar dentro del repositorio (estos deben estar vacios!!!). Dicho árbol debe contener tres directorios principales (top-level).
| # CODE : bash | |
| /tmp/proyect/branches/ /tmp/proyect/tags/ |
|
Una ves que se tiene el árbol de archivos y directorios completo, se debe usar el comando svn import, para importar los archivos necesarios para el funcionamiento de svn.
| # CODE : bash | |
| $ svn import /tmp/proyect file://path_repositorio -m "initial import" | |
Con esto ya tenemos los archivos necesarios para empezar a trabajar. Para empezar a manipular el repositorio, debemos crear un nuevo working copy de los datos:
| # CODE : bash | |
| $ svn checkout file://path_repositorio/trunk proyect | |
Ahora tenemos una copia personal de parte del repositorio en el directorio proyect. Ahora puedes trabajar los archivos en tu working copy, para luego pasar estos cambios al repositorio.
- Entra a tu working copy y edita los archivos que desees
- Ejecutar svn diff compara tus archivos con los del repositorio.
- Ejecutar svn commit para subir tus archivos al repositorio
- Ejecutar svn update para actualizarte. (este paso también es recomendable ejecutarlo al principio)
[edit] Guía de Uso
Lo primero que tenemos que hacer es crear una copia del repositorio en nuestra máquina:
| # CODE : bash | |
| $ svn checkout http://url_repositorio/trunk/proyecto /directorio_local | |
[edit] Ciclo básico
Actualizarnos:
| # CODE : bash | |
| $ svn update (actualiza nuestra "working copy") | |
Hacer cambios:
| # CODE : bash | |
| $ svn add foo (Archivo, directorio o link simbólico foo para ser agregado al repositorio en el siguiente commit) | |
| # CODE : bash | |
| $ svn delete foo (Archivo, directorio o link simbólico foo para ser borrado del repositorio en el siguiente commit) | |
| # CODE : bash | |
| $ svn copy foo bar (Se crea una copia (bar) del archivo foo en el siguiente commit) | |
| # CODE : bash | |
| $ svn move foo bar (Se crea una copia (bar) del archivo foo, y se borra el archivo foo en el siguiente commit) | |
Examinar nuestros cambios:
| # CODE : bash | |
| $ svn status (Devuelve el estado de los archivos, para ver el significado de cada columna devuelta por este comando, ejecutar svn help status) | |
| # CODE : bash | |
| $ svn diff (Compara tus cambios con los archivos del repositorio) | |
| # CODE : bash | |
| $ svn revert foo (Revierte los cambios que hiciste en el archivo foo) | |
Volver a actualizar:
| # CODE : bash | |
| $ svn update (actualiza nuestra "working copy" nuevamente, y nos indica (con una c) si hay conflictos con los cambios que hicimos) | |
| # CODE : bash | |
| $ svn resolved foo (Resuelve los conflictos que hay con el archivo foo) | |
Subir nuestros cambios
| # CODE : bash | |
| $ svn commit (Envia todos los cambios de tu "working copy" al repositorio) | |
| # CODE : bash | |
| $ svn commit --message "mensaje" (Si queremos subir los archivos dejando un comentario de los cambios) | |
Otras funciones importantes son:
| # CODE : bash | |
| $ svn log (Muestra todos los mensajes adjuntos a las revisiones) | |
| # CODE : bash | |
| $ svn cat (Para tomar cualquier revisión y verla en nuestra pantalla) | |
| # CODE : bash | |
| $ svn list (Muestra los archivos en los directorios de cualquier revisión) | |
![]() |
Copyright (c) 2008 UTUTO Project. |



