Este documento proporciona una introducción a Subversion (SVN), un sistema de control de versiones. Explica que SVN mantiene un historial de cambios de archivos, envía solo las diferencias entre versiones, permite commits generales, y realiza todos los cambios o ninguno para evitar problemas de integridad. También describe cómo trabaja el modelo cliente-servidor de SVN y cómo resuelve conflictos mediante la solución de copia-modificar-fusionar. Finalmente, ofrece ejemplos básicos de comandos SVN.
8. ➢ Licencia: Apache / BSD
➢ Desarrollo colaborativo
➢ Maquina de tiempo (4D)
➢ Sucesor de CVS
9. ¿Por qué usar svn y
no otro sistema de
control de versiones?
10. ➢ Registra cambios de la estructura de archivos
manteniendo el historial, cvs no.
➢ Se envían/reciben solo las diferencias entre
versiones, CVS envia/recibe archivos completos.
➢ Los commit son generales, no individuales.
➢ Permite backups al instante, no hay que
interrumpir el acceso como lo hace cvs.
12. ➢ Registra cambios de la estructura de archivos
manteniendo el historial, cvs no.
➢ Se envían/reciben solo las diferencias entre
versiones, CVS envia/recibe archivos completos.
➢ Los commit son generales, no individuales.
➢ Permite backups al instante, no hay que
interrumpir el acceso como lo hace cvs.
13. archivo1.pl archivo2.pl
#!/usr/bin/perl #!/usr/bin/perl
$mito = "perl es dificil"; use strict;
print $mito; my $mito = "perl es dificil";
print $mito;
diff -u (diferencia unificada)
--- archivo1.pl 2006-11-19 18:15:34.000000000 -0400
+++ archivo2.pl 2006-11-19 18:17:04.000000000 -0400
@@ -1,3 +1,6 @@
#!/usr/bin/perl
-$mito = "perl es dificil";
+use strict;
+my $mito = "perl es dificil";
print $mito;
14. ➢ Registra cambios de la estructura de archivos
manteniendo el historial, cvs no.
➢ Se envían/reciben solo las diferencias entre
versiones, CVS envia/recibe archivos completos.
➢ Los commit son generales, no individuales.
➢ Permite backups al instante, no hay que
interrumpir el acceso como lo hace cvs.
15. Escenario
1. Estamos en la copia de trabajo actual
2. Modificamos archivo1.pl y archivo2.pl (no tocamos
archivo3.pl)
3. Actualizamos el repositorio con nuestros cambios
4. Se interrumpe la transmisión de datos (problemas de
red, luz, etc.)
Comportamiento
cvs
Actualiza los que pudo, hay que reparar la integridad
manualmente
svn
O realiza todos los cambios, o no actualiza ninguno
16. ➢ Registra cambios de la estructura de archivos
manteniendo el historial, cvs no.
➢ Se envían/reciben solo las diferencias entre
versiones, CVS envia/recibe archivos completos.
➢ Los commit son generales, no individuales.
➢ Permite backups al instante, no hay que
interrumpir el acceso como lo hace cvs.
26. crear repositorio
svnadmin create REPOS_PATH
importar proyecto
svn import miProyecto REPOS_PATH/miProyecto
crear copia de trabajo
svn checkout REPOS_PATH/miProyecto
subir modificaciones
svn commit
actualizar copia de trabajo
svn update
27. muestra los cambios realizados
svn status -v
imprime diferencias realizadas desde la
revisión indicada
svn diff -r 4 archivo1.pl
muestra todos los mensajes por revisión
svn log
deshace cambios
svn revert archivo1.pl
muestra contenido de archivo por revisión
svn cat -r 3 archivo1.pl
lista archivos del repositorio sin tener que
bajar localmente
svn list