Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Sistemas de control de versiones. Introducción a svn
1. Sistemas de control de
versiones
Introducción a SVN
Miguel Oliván
GIFNA
Universidad de Zaragoza
2. Itinerario
Introducción
Ciclo de trabajo básico
Explicación de cada paso
Buenas prácticas
Programas auxiliares
3. 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
8. Ciclo de trabajo con svn
Actualizar
Hacer cambios
Revisar los cambios
Corregir errores
Resolver todos los conflictos
Publicar
9. 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)
11. Revisar cambios
$ svn status
? scratch.c
A stuff/bloo.h
C stuff/loot/lump.c
D stuff/fish.c
M bar.cs
¿Qué significa?
12. 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)
13. 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;
}
14. 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
15. 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)
16. Publicar
$ svn commit
Realizar después de todos los pasos anteriores
De otro modo svn nos obligará hacerlo
Poner siempre comentario
17. 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
------------------------------------------------------------------------
18. 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
19. Programas
Multiplataforma
RapidSVN
Linux/Unix
RabbitVCS → GNOME
KDESvn → KDE
Windows
TortoiseSVN
22. Pasos posteriores
Ramas
Mezcla de ramas
Gestión de un repositorio
Política de ramas y etiquetas
Sistemas distribuídos
23. Documentación
Version Control with Subversion
Ciclo de trabajo
Subversion Cheat Sheet
http://en.wikipedia.org/wiki/Revision_control
Git SVN Crash Course