Sistemas de control de versiones. Introducción a svn
-
Upload
miguelolivan -
Category
Technology
-
view
2.827 -
download
0
Transcript of Sistemas de control de versiones. Introducción a svn
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
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.remoteserver.com/home/svn/test
Directorio copia local→
Credenciales (usuario/contraseña sshagent)
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
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