La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Control de versiones y Subversion José Luis López Pino Fco Javier Lucena Lucena.

Presentaciones similares


Presentación del tema: "Control de versiones y Subversion José Luis López Pino Fco Javier Lucena Lucena."— Transcripción de la presentación:

1 Control de versiones y Subversion José Luis López Pino Fco Javier Lucena Lucena

2 Índice Introducción Clasificación Acciones Comunes Problema - Sobreescritura Conflictos Ramas Etiquetas (Tags) Manos a la Obra !

3 ¿Qué es el control de versiones?

4 Repositorio Un repositorio, depósito o archivo es un sitio centralizado donde se almacena y mantiene información digital, habitualmente bases de datos o archivos informáticos Subversion es un repositorio en forma de árbol con una jerarquía de directorios y archivos.

5 Repositorio

6 ¿Qué es el control de versiones? ”El control de versiones es el arte del manejo de los cambios en la información”. Gestiona archivos y directorios, y sus cambios a través del tiempo. Herramienta crítica para los programadores. Facilita volver a una versión anterior. Facilita el trabajo colaborativo. Se envían sólo las diferencias realizadas. El control de versiones no sólo es necesario para el software.

7 Clasificación http://www.infoq.com/articles/dvcs-guide

8 Clasificación: centralizados Un poco más sencillos de utilizar que los distribuidos. Se tiene un control total sobre las versiones. Limitaciones en el acceso. Puede haber menos conflictos a resolver. Ejemplos: CVS y Subversion.

9 Clasificación: distribuidos Se puede trabajar de forma local. Operaciones locales más rápidas, no se usa red. No necesitas permiso para participar en los proyectos. No se depende de una sola máquina física. Puedes seguir teniendo un control centralizado del proyecto. Ejemplos: Git, Bazaar y Mercurial.

10 Herramientas svnCliente de línea de comandos. svnversionEstado de la copia de trabajo. svnlookInspeccionar un repositorio. svnadminCrear, modificar o reparar repos. svnserveServidor.

11 Acciones comunes Revisión (revision): Es una “instantánea” del repositorio en un momento particular en el tiempo, cada vez que el servidor acepta un envío se crea una nueva revisión. Para identificarlas se utilizan números desde el 0. Copia de trabajo (working copy): Copia local y privada de los archivos y directorios del repositorio. A ella se incorporarán los cambios o pondrán a disposición los tuyos cuando tú se lo indiques.

12 Acciones comunes Crear copia de trabajosvn checkout Ver diferenciassvn diff Deshacer cambios localessvn revert Subir nueva versiónsvn commit Sincronizar con repos.svn update Mensajes de logsvn log Gestionar ficherossvn add | delete Copiar Moversvn move | copy Ver ficheros modificadossvn status ¡Ayuda! svn help

13 Estructura común del repositorio Hay maneras estándar recomendadas para organizar un repositorio. /trunkcontendrá la “línea principal” /branchescopias de las ramas /tagscopias de las etiquetas

14 Problema: sobreescritura

15 Solución parcial: bloqueo

16 Solución: mezclar

17 Conflictos Cuando se produce conflicto nos encontramos: filename.mine”Mi” archivo filename.rOLDREVVersión original de la mía. filename.rNEWREVVersión actual en el repos. $ svn update U INSTALL Actualizado G README Unido C bar.c ¡Conflicto! Updated to revision 46.

18 Solucionando conflictos Tenemos tres opciones: Fusionar el texto en conflicto “a mano” y marcar el conflicto como resuelto (svn resolved). Copiar uno de los ficheros temporales sobre su fichero de trabajo y marcar como resuelto. Eliminar cambios locales (svn revert).

19 Ramas Rama (branch): Línea de desarrollo que existe de forma independiente a otra, pero comparte una historia común si mira suficientemente atrás en el tiempo.

20 Ramas Subversion tiene comandos para ayudarle a mantener ramas paralelas de sus ficheros y directorios. Nos evitan duplicar cambios en varias ramas. Permiten mezclar y probar diferentes líneas de desarrollo en su trabajo diario.

21 Operaciones con ramas Crear una rama svn copy Unir dos fuentes svn merge Ver diferencias antes de unirsvn diff Trasladarnos a otra ramasvn switch

22 Etiquetas Al igual que las ramas, las creamos con svn copy Etiqueta (tag): Una etiqueta no es más que una instantánea (snapshot) del proyecto en un momento de tiempo. Realmente cada revisión ya es una instantánea, pero con las etiquetas le ponemos nombres más bonitos y pueden ser de sólo un subdirectorio. En subversion, una etiqueta es realmente una nueva rama que creamos y lo almacenamos en un lugar diferente (/tags) y no realizamos cambios en ella.

23 Clientes visuales RabbitVCS (Nautilus) KDESvn (Konqueror) TortoiseSVN (Windows) RapidSVN (Linux, Windows y MacOS) Cliente integrado con los distintos EDS.

24 Servidores externos http://forja.rediris.es/ http://code.google.com/hosting/ http://sourceforge.net/ http://www.xp-dev.com/ http://savannah.gnu.org/

25 Libro Version Control with Subversion Control de versiones con Subversion Libre http://svnbook.red- bean.com/

26 Crear directorio A ser posible en /home/nombre_usuario/aaa Con los subdirectorios /trunk Varios fichero hml, cpp, java Fichero originales del proyecto Trabajaremos sobre estos ficheros /branches /tags

27 Manos a la Obra ! Consola power ! If (svn - - version == error) Sudo apt-get install subversion else svn help do svn help while (lo_recuerdo_de_la_ presentacion);

28 Creando el repositorio svnadmin create /home/fran/repositorio_nuevo cd repositorio_nuevo ls -la cd..

29 Añadir ficheros al repositorio svn import aaa file:///home/fran/repositorio_nuevo file:///home/fran/repositorio_nuevo -m ”El primer import a mi repositorio” NOTA: Importar los archivos al repositorio no convierte al árbol original de directorios y archivos en una copia local. Los archivos originales no quedan bajo control de versiones. Es necesario hacer un checkout para obtener una copia local.

30 Copia local svn checkout file:///home/fran/repositorio_nuevo/trunk file:///home/fran/repositorio_nuevo/trunk copia_local cd copia_local # ficheros del repositorio # sobre los que trabajaremos Editar los ficheros

31 Copia local svn diff Aparece cada fichero modificado en la copia_local Cada linea modificada comienza con el simbolo + svn commit Deposita la nueva version del fichero en el repositorio svn update Sincronizar la copia_local con el repositorio

32 Copia local diff

33 Copia local

34

35 Revisiones HEAD # última revision en el repositorio BASE # en la copia de trabajo COMMITED #ultima revision con combio PREV # commited -1 svn log - - revision 1 svn diff - -revision PREV:COMMITTED index.html svn diff - - revision HEAD Compara copia_local con el repositorio

36 Ciclo básico de trabajo Actualizar copia local svn update Hacer Cambios svn add svn delete svn copy svn move Examinar tus cambios Svn diff

37 Ciclo básico de trabajo Rectificar algunos cambios svn revert Resolver conflictos svn merge svn resolve Enviar los cambios svn commit -m ”Mi mensaje indico cambio”

38 Ejercicio svn revert Modificar un fichero Usar el comando sobre el fichero Comprobar que el fichero vuelve al estado anterior.

39 Google code hosting Crear una cuenta en Gmail Enviar correo a fran.lucena@gmail.comfran.lucena@gmail.com code.google.com/hosting El nombre del proyecto: svnosl

40 Google code

41 Añadir un fichero.html con vuestro nombre con el siguiente codigo: Sheldon Cooper

42 Ejercicio Crear un función en el fichero hola.cpp, hacer uso de ella en el main.

43 Control de asistencia Modificar fichero asistencia.txt

44 Licencia Este tutorial tiene licencia GFDL, cuyo texto puedes obtener en http://gugs.sindominio.net/licencias/gfdl-1.2-es.html Copyright © 2009 José Luis López Pino, Fco Javier Lucena Lucena. Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre de GNU, Versión 1.2 o cualquier otra versión posterior publicada por la Free Software Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de Cubierta.


Descargar ppt "Control de versiones y Subversion José Luis López Pino Fco Javier Lucena Lucena."

Presentaciones similares


Anuncios Google