Sistemas de control de versiones. Introducción a svn

23
Sistemas de control de versiones Introducción a SVN Miguel Oliván GIFNA Universidad de Zaragoza

Transcript of Sistemas de control de versiones. Introducción a svn

Sistemas de control de versiones

Introducción a SVN

Miguel OlivánGIFNA

Universidad de Zaragoza

Itinerario

Introducción Ciclo de trabajo básico Explicación de cada paso Buenas prácticas Programas auxiliares

Sistemas de control de versiones

Guardan la historia   Qué, quién, cuándo Backup, deshacer pruebas, ...

Ayudan al desarrollo individual Esenciales en el desarrollo colaborativo

Sincronización Ayudan a resolver conflictos

Sistemas de control de versiones

Subversion

Ampliamente usado Esquema centralizado Multiplataforma Libre

Conceptos básicos

Repositorio Copia local Revisión Etiqueta (tag) Actualización (update) Publicación (commit) Conflicto

Obtener un repositorio

svn checkout URL directorio URL  repositorio →

http://servidor/path/al/repositorio   svn+ssh://your.remote­server.com/home/svn/test

Directorio  copia local→

Credenciales (usuario/contraseña ­ ssh­agent)

Ciclo de trabajo con svn

Actualizar Hacer cambios Revisar los cambios Corregir errores Resolver todos los conflictos Publicar

Actualizar

$ svn update

U foo.c

U bar.c

Updated to revision 2

¡Se ejecuta en directorio de trabajo y subdirectorios! (aplicable a casi todos los comandos)

Hacer cambios

$ svn add fichero $ svn delete fichero $ svn copy fichero.old fichero.new $ svn move fichero.old fichero.new $ svn mkdir dir

Revisar cambios

$ svn status

? scratch.c

A stuff/bloo.h

C stuff/loot/lump.c

D stuff/fish.c

M bar.cs

¿Qué significa?

Revisar cambios

? scratch.c → no está bajo svn

A bloo.h → programado para añadirse

C stuff/loot/lump.c → ¡conflicto!

D stuff/fish.c → programado para borrarse

M bar.cs → modificaciones locales (ver diferencias)

Revisar cambios

$ svn diff [fichero]Index: bar.c

===================================================================

--- bar.c (revision 3)

+++ bar.c (working copy)

@@ -1,7 +1,12 @@

+#include <sys/types.h>

+#include <sys/stat.h>

+#include <unistd.h>

+

+#include <stdio.h>

int main(void) {

- printf("Sixty-four slices of American Cheese...\n");

+ printf("Sixty-five slices of American Cheese...\n");

return 0;

}

Corregir errores

$ svn revert filename $ svn revert --recursive . #(!)

Actúa sobre A, D, C y M Revierte añadidos, borrados y modificaciones no 

publicadas → las modificaciones locales se pierden

$ svn status README

M README

$ svn revert README

Reverted 'README'

$ svn status README

Resolver todos los conflictos

$ svn resolve --accept opt file opt permite las siguientes opciones:

mine-full → la versión local es la buena theirs-full → la versión remota es la buena base → mantener la útima que subí  working → el fichero local es el bueno (asume 

resolución manual)

Publicar

$ svn commit

Realizar después de todos los pasos anteriores De otro modo svn nos obligará hacerlo Poner siempre comentario

Consulta de versiones

$ svn log [file]$ svn log acquire.cxx

------------------------------------------------------------------------

r26 | miguel | 2010-11-25 11:26:12 +0100 (jue 25 de nov de 2010) | 2 líneas

Accumulate, draw and analysis

------------------------------------------------------------------------

r7 | miguel | 2010-09-29 11:05:39 +0200 (mié 29 de sep de 2010) | 5 líneas

Writing with TfileStruct and write in DAQWriter. Adding NRun

------------------------------------------------------------------------

r2 | miguel | 2010-09-08 17:28:59 +0200 (mié 08 de sep de 2010) | 2 líneas

first commit

------------------------------------------------------------------------

Buenas prácticas

Comunicación verbal Comentar commits Commit de modificaciones asociadas a una 

característica (changeset) Commits pequeños Testear bien antes de los commits No tener miedo a los commits

Programas

Multiplataforma RapidSVN

Linux/Unix RabbitVCS  GNOME→

KDESvn  KDE→

Windows TortoiseSVN

Diferencias gráficamente svn diff --diff-cmd=meld --revision 2:7 acquire.cxx

Diferencias gráficamente

Linux/Unix Meld   GNOME→

Windows Winmerge

Pasos posteriores

Ramas Mezcla de ramas Gestión de un repositorio Política de ramas y etiquetas Sistemas distribuídos

Documentación

Version Control with Subversion Ciclo de trabajo

Subversion Cheat Sheet http://en.wikipedia.org/wiki/Revision_control Git ­ SVN Crash Course