UNIVERSIDAD NACIONAL DE LOJA
Área de Energía, las Industrias y Recursos Naturales no Renovables
Ingeniería en Sistemas
Taller: Ingeniería del Software
Integrantes: Jimmy Fernando Jaramillo Benítez Paralelo: 9”B”
Jenny Paulina Imacaña Fernández
Ximena Del Cisne Quevedo Rojas
Yanela del Cisne Ríos Armijos
Fecha: 07 de enero de 2011
1.- CONCEPTO DE SUBVERSION
Subversion
Subversion ayuda a que los desarrolladores lleven un seguimiento de los cambios en los ficheros de código fuente de su proyecto.
Hay varias razones: para obtener y comparar versiones anteriores, cazar errores regresivos, mantener ramas compatibles con las versiones anteriores, producir excelentes registros de cambios (//changelogs//), trabajar sobre dos arreglos o mejoras diferentes sin confusiones. Además, conseguirá todo esto con poco esfuerzo, porque Subversion es sorprendentemente fácil de instalar.
Un repositorio Subversion se comporta como un sistema de ficheros que recuerda conjuntos de cambios que se le han hecho. Esto lo hace almacenando ficheros en una estructura de árbol, llevando un control de su evolución a lo largo del tiempo. El repositorio incrementa un número global de revisión con cada conjunto de cambios enviados (//committed//) al repositorio. Como la totalidad del árbol está versioneada, actúa como un sistema de ficheros normal. Es posible copiar y renombrar ficheros; crear una rama del proyecto es tan fácil como copiar un directorio. También se le puede pedir a Subversion que produzca una salida con las diferencias entre dos revisiones arbitrarias, o que recupere algún sub-árbol de la revisión //N//.
Subversion o SVN es la mejor opción para los desarrolladores web y programadores en general para ayudar a mantener un control y una buena coordinación de un proyecto ya sea de diseño web, desarrollo de software, el objetivo principal de la Subversion es llevar un control de versiones tal como lo hace el CVS pero con muchas mejoras.
Existen varias interfaces para la Subversion tanto para Windows, Linux y Mac algunos son programas individuales y otros son entornos de desarrollo completos, algunos de ellos son:
- TortoiseSVN. Para Windows y se integra al explorador de Windows.
- Subclipse. se trata de un Plugin que integra Subversion al entorno de desarrollo Eclipse al igual que Subversive es otro Plugin para Eclipse.
- ViewVC. Es una interfaz web, por lo que es multiplataforma.
- Para Mac, pueden emplearse los interfaces SvnX, RapidSVN y Zigversion
- RapidSVN también corre en Linux.
- KDESvn. Provee integración con el escritorio KDE, muy parecido en aparencia/funcionamiento/caracteristicas a TortoiseSVN
2.- VENTAJAS, DESVENTAJAS DE SUBVERSION
Ventajas:
- Es gratuito y de código abierto,
- Es fácil de instalar y usar y dispone de excelentes herramientas
- Las modificaciones (incluyendo cambios a varios archivos) son atómicas.
- Subversion le permite mover archivos y directorios versionados sin ninguna pérdida de información
- Utiliza Apache.
Desventajas:
- No registra cambios en la estructura de directorios: no es posible mover, renombrar ni copiar.
- Con CVS era necesario interrumpir el acceso al repositorio para crear las copias de seguridad
- No permite conjuntos de cambios.
- Almacena ficheros binarios enteros.
- No usa la red eficientemente (en CVS siempre se envían al servidor archivos completos y no sólo las diferencias que sí hace Subversion).
- El creado de ramas y etiquetas en CVS es una operación no lineal (O(n)) siendo en Subversion de coste constante (O(1)).
- El manejo de archivos binarios los trata internamente como si fueran de texto no como Subversion.
3. COMO MONTAR UN SERVIDOR SUBVERSION
Instalar SVN en Windows
Pasos para instalar SVN:
1) Instalar Snvserve
- a) Obtener la última versión del servidor Svnserve aquí.
- b1) Si tienes el instalable para Windows, sólo ejecutarlo.
- b2) Si tienes un archivo Zip con los binarios, crea un directorio, Por ejemplo, c:\svnserve (<directorio_de_Svnserve>). Copia todos los ficheros de Zip.
2) Instalar TotoiseSVN (Es necesario reiniciar el PC)
- a) Obtener la última versión de TotoiseSVN.
- b) Ejecutar la instalación de TortoiseSVN.
3) Configurar el servidor
- a) Crear un directorio donde estarán los repositorios de SVN, por ejemplo: c:\repos (<directorio_de_repositorios>).
- b) Crear un servicio de Windows para arrancar y parar fácilmente el Servidor de SVN. En una ventana de la consola de Windows ejecutar el siguiente comando:
sc create svn.local binpath= “\”<directorio_de_Svnserve>\svnserve.exe\” —-service —-root<directorio_de_repositorios>” displayname= “Subversion Repository” depend= Tcpip
- Donde:
- <directorio_de_Svnserve> : Es el directorio donde instalamos el servidor Svnserver (Paso 2b).
- <directorio_de_repositorios> : Es el directorio que hemos creado para los repositorios. (Paso 3a)
- c) Arrancar el servicio de SVN. En la ventana de gestión de servicios de Windows (Panel de control de Windows -> Herramientas administrativas -> Servicios), buscar el servicio “Subversión Repository” e inicializarlo.
4) Añadir un nuevo proyecto de desarrollo
- a) Crear un directorio dentro del directorio de repositorios, en nuestro ejemplo c:\repos\test. El repositorio se creará dentro de este directorio, aseguraros de que el directorio está vacío y no tiene protección contra escritura.
- b) Botón derecho encima del directorio y con tortoiseSVN crea un repositorio (Opción “Create repository here…”).
- c) Selecciona “Native filesystem (FSFS)”, es menos problemática con configuraciones en red. NOTA: TortoiseSVN creará varios ficheros dentro del directorio, NO cambiar NADA.
- d) Editar los ficheros de configuración. NO tocar nada más. En el directorio del ejemplo c:\repos\test\conf editar los ficheros:
- Fichero svnserve.conf, añadir
[general]
# Solo acceso a usuarios autorizados.
auth-access = write
# Fichero de usuarios.
password-db = passwd
- Fichero passwd, añadir
[users]
# listado de usuarios y password
usuario = pass
5) Crear un proceso de Backup de nuestros ficheros
- a) Crea un directorio donde guardar el Backup, en el ejemplo c:\SvnBackup
- b) Crear un fichero RealizaBackupSVN.bat y añade el siguiente shell script.
rem borra el contenido del anterior backup
del “c:\SvnBackup” /S /F /Q
rd c:\SvnBackup /S /Q
md c:\SvnBackup
rem backup en caliente
c:\<directorio_de_Svnserve>\svnadmin.exe hotcopy c:\repos\test c:\SvnBackup
- c) Crea una tarea programa de Windows que ejecute el shell script anterior, puede ser a cualquier hora ya que la copia se hace en caliente y no es necesario parar el servidor de SVN.
Instalar SVN en Ubuntu
Para ello primero instalamos lo necesario (Apache y SVN):
sudo apt-get install apache2 subversion subversion-tools libapache2-svn
A continuación creamos los repositorios para guardar nuestros proyectos (en este caso se ha elegido /var/lib/svn):
sudo mkdir -p /var/lib/svn
Vamos a probar con un proyecto nuevo llamado “libros”:
sudo mkdir -p /var/lib/svn/libros
sudo svnadmin create /var/lib/svn/libros
sudo svn mkdir /var/lib/svn/libros/trunk -m “Trunk”
sudo svn mkdir /var/lib/svn/libros/tags -m “Tags”
sudo svn mkdir /var/lib/svn/libros/branches -m “Branches”
Ahora configuramos los modulos WebDAV y svn para apache que hemos instalado con el fichero /etc/apache2/mods-available/dav_svn.conf para decir donde estará nuestro repositorio:
# dav_svn.conf – Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.
# …
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Uncomment this to enable the repository,DAV svn
# Set this to the path to your repository
SVNParentPath /var/lib/svn
# The following allows for basic http authentication. Basic authentication
# should not be considered secure for any particularly rigorous definition of
# secure.
# to create a passwd file
# # rm -f /etc/apache2/dav_svn.passwd
# # htpasswd2 -c /etc/apache2/dav_svn.passwd dwhedon
# New password:
# Re-type new password:
# Adding password for user dwhedon
# #
# Uncomment the following 3 lines to enable Basic Authentication
AuthType Basic
AuthName “Subversion Repository Access”
AuthUserFile /etc/apache2/dav_svn.passwd
# Uncomment the following line to enable Authz Authentication
# AuthzSVNAccessFile /etc/apache2/dav_svn.authz
# The following three lines allow anonymous read, but make
# committers authenticate themselves.
Require valid-user
Si reiniciamos Apache y miramos en la siguiente dirección:
http://localhost/svn/colt
Si solamente utilizamos nuestro repositorio en una red local, no sería necesario password. Pero sino, podemos proteger nuestro código creando una cuenta como se describe en el fichero anterior:
sudo htpasswd2 -c /etc/apache2/dav_svn.passwd usuario
También hay que recordar darle permisos a Apache para que pueda acceder libremente nuestro repositorio:
sudo chown -R www-data.www-data /var/lib/svn
4. MANEJO DE USUARIOS EN SUBVERSION
Necesitarás ser root para la parte inicial de la configuración. Crea el usuario y grupo svn con los siguientes comandos:
groupadd svn && useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false svn
Si piensas tener múltiples repositorios, deberías tener un grupo dedicado a cada repositorio para facilitar la administración. Crea el grupo svntest para el repositorio de pruebas y añade el usuario svn a dicho grupo con los siguientes comandos:
groupadd svntest && usermod -G svntest svn
Adicionalmente, deberías establecer umask 002 mientras trabajas con un repositorio para que todos los nuevos ficheros sean escribibles por el propietario y el grupo. Esto se hace mandatorio creando un guión envoltorio para svn y svnserve:
mv /usr/bin/svn /usr/bin/svn.orig &&
mv /usr/bin/svnserve /usr/bin/svnserve.orig &&
cat >> /usr/bin/svn << "EOF"
#!/bin/sh
umask 002
/usr/bin/svn.orig "$@"
EOF
cat >> /usr/bin/svnserve << "EOF"
#!/bin/sh
umask 002
/usr/bin/svnserve.orig "$@"
EOF
chmod 0755 /usr/bin/svn{,serve}
5.- COMANDOS DE SUBVERSION
A continuación procedemos a mostrar algunos comandos útiles para trabajar con subversion, aquí indicamos lo básico para poder trabajar con el control de versiones, pero es recomendable la instalación de algún cliente con interfaz gráfica.
# 1. Checkout
svn checkout http://svn.example.com/repos/proyecto/trunk
# 2. Actualizar cambios hechos por otros
svn update
# 3. ¿Que cambios voy a enviar?
svn status
# 4. Enviar mis cambios
svn commit –m “comentario sobre los cambios subidos”
# 5. Poner ficheros y directorios bajo el control de subversion
svn add fichero1 fichero2 subdirectorio
svn commit –m “Añado dos ficheros y un directorio”
# 6. borrar ficheros y directorios
svn delete fichero1 fichero2 subdirectorio
svn commit –m “Borro dos ficheros y un directorio”
Webgrafía:
ü Tutorial creado por Rafael Garcia-Suarez . Seriado en línea. Extraido de:[http://www.mononeurona.org/index.php?idp=412]. Consulta realizada: 07 de Enero de 2011
ü Tutorial creado por Lcflores. Seriado en línea. Extraido de: [http://www.xperimentos.com/2007/03/22/instalar-subversion-svn-en-windows-en-cinco-pasos-con-backup-incluido/]. Consulta realizada: 07 de Enero de 2011
ü Instalar SVN en Ubuntu. Seriado en línea. Extraido de: [http://esubuntu.wordpress.com/2007/04/24/como-montar-un-servidor-de-desarrollo-con-svn/]. Consulta realizada: 07 de Enero de 2011
ü Subversion. Seriado en línea. Extraido de: [http://www.juntadeandalucia.es/xwiki/bin/view/MADEJA/Subversion]. Consulta realizada: 07 de Enero de 2011




