1. Sistemas de control de versiones y svn Formación de comunidad para @emergya Junio 2010 @davidjguru [email_address]
2. Objetivos 1.-Aclarar conceptos sobre control de versiones 2.-Madurar conceptos que ya sepamos 3.-Clarificar la importancia de un buen histórico 4.-Prácticar
3. Índice 1.-Introducción a conceptos 2.-Justificación del uso de un sistema de control de versiones 3.-Historia de los sistema de control de versiones 4.-Vista general de subversion 5.-Ciclo básico de trabajo con svn 6.-Problemas comunes con svn
4. Introducción a conceptos Repositorio: Lugar donde se puede almacenar -esto es, donde se accede, se guardan, se extraen, se consultan- elementos software. Suelen contar con algunas medidas que los diferencia de simples dispositivos de almacenamiento. Control de versiones: Conjunto de medidas para gestionar el estado en el que se encuentra en un momento dado nuestro producto software. Control de versiones centralizado: Un nodo central para albergar todo el código que esta a disposición de todos los usuarios. Control de versiones distribuido: Un sistema de ficheros distribuidos. Cada usuario sincroniza su clon.
5. Justificación del uso Trabajo concurrente Manejo de diferencias Registro del historial de cambios Identificación de conflictos Facilitar la colaboración Revertir estados
7. Intro a svn VCS centralizado Lanzado en el año 2000 Licencia de uso Apache (cumple las cuatro libertades) Mucho uso en comunidades openSource Muy extendido en el entorno empresarial
8. Características de svn Recoge casi todas las de CVS Único estado común en un instante para todo el proyecto Permite accesos distintos (Apache, svnserve y local) Distintas herramientas para administrar, revisar y explorar el repositorio
9. Partes y acceso a svn Ocho módulos distintos: svn, svnversion, svnlook, svnadmin, mod_dav_svn, svndumpfilter, svnserve, svnsync. Accesos distintos: file:/// http:// svn:// https:// svn + ssh://
11. Ciclo básico de trabajo con svn //Prepara tu sistema [email_address] : ~$ sudo apt-get install subversion [email_address] : ~$ sudo mkdir /var/svn/ //Crea un proyecto de trabajo [email_address] :~$ sudo svnadmin create /var/svn/test //Da permisos de trabajo [email_address] : ~$ sudo chown -R david: /var/svn/ //Mediante checkout, obten tu copia de trabajo [email_address] : ~$ svn checkout file:///var/svn/test
12. Ciclo básico de trabajo con svn //Crea la estructura de trabajo recomendada [email_address] : ~$ cd test/ [email_address] : ~/test$ mkdir trunk tags branches //Añadirla al repositorio [email_address] : ~/test$ svn add trunk tags branches //Realizar el commit de estos cambios [email_address] : ~/test$ svn commit -m ”Se ha creado la estructura básica”
13. Ciclo básico de trabajo con svn //Genera un fichero de prueba en la copia local [email_address] : ~/test$ cd trunk [email_address] : ~/test/trunk$ vim fichero_prueba.txt //Se añade el nuevo fichero a la copia local de trabajo [email_address] : ~/test/trunk$ svn add fichero_prueba.txt //Se sube el cambio al repositorio [email_address] : ~/test/trunk$ svn commit -m “Subida del fichero de prueba”
14. Ciclo básico de trabajo con svn / /Obten la última version del proyecto [email_address] : ~/test/trunk$ svn up //Obten la información de la evolución del proyecto [email_address] : ~/test/trunk$ svn log //Comprueba los cambios entre dos revisiones [email_address] : ~/test/trunk$ svn diff -r 12:1234
15. Ciclo básico de trabajo con svn //Unifica logs en un mismo archivo [email_address] : ~/test/trunk$ svn log -r 14 > mylog [email_address] : ~/test/trunk$ svn log -r 17 >> mylog [email_address] : ~/test/trunk$ svn log -r 19 >> mylog //Comprueba el contenido de los logs [email_address] : ~/test/trunk$ cat mylog //Haz un clean del repositorio [email_address] : ~/test/trunk$ svn cleanup /test/
16. Problemas comunes con svn Problemas relacionados con renombrado Problemas relacionados con ficheros de metainformación Problemas relacionados con transacciones de la base de datos Problemas relacionados con permisos Problemas con ficheros de bloqueos Problemas con desarrollo sobre tags
17. + Info // Info introductoria http://es.wikipedia.org/wiki/Control_de_versiones http://www.chuidiang.com/chuwiki/index.php?title=Sistema_de_control_de_versiones // Info en el blog personal http://davidjguru.wordpress.com/tag/vcs/ // Buenas prácticas con svn http://www.yolinux.com/TUTORIALS/Subversion.html#BESTPRACTICES // Manual de referencia http://svnbook.red-bean.com/