Subversion Administrando Archivos
Subversion
●
Introducción a subversion
Introducción a Subversion
¿Qué es subversion? (aka
● ● ●
svn)
Un ”sistema de control de versiones”. Almacena ficheros en un servidor central. Mantiene el historial (diferencial) completo de los datos: nunca se pierde nada.
servidor svn (”repositorio”)
Introducción a Subversion
¿Qué es subversion?
●Es genérico:
– – – – –
código fuente imagenes /etc/* documentos Lo que sea!
● ●
Es maduro y estable, buen soporte. Es multiusuario.
Introducción a Subversion
Forma de trabajo tradicional
● ● ●
●
●
Modificas tus archivos. ... Decides subir los archivos al servidor común. Descubres que otro compañero ha modificado cosas en los mismos archivos. Te das cuenta de las horasque supone integrar sus cambios con los tuyos. Corres en círculos y te tiras por la ventana.
Introducción a Subversion
Forma de trabajo con svn
● ● ●
●
●
Modificas tus archivos. Decides subir los archivos al repositorio. Subversion descubre que otro compañero ha modificado cosas en los mismos archivos. Subversion integra tus cambios con los de tu compañero y los sube al servidor.Te vas a tomar unas birras con los amigos.
...
Introducción a Subversion
Sí, claro...
●
En efecto, svn no siempre sabe como integrar los cambios.
–
Ej: dos usuarios modifican la misma línea de texto.
Original: París es la capital de Japón.
Paco: París es la capital de Francia. Ana: Tokyo es la capital de Japón.
Subversion: wtf? ---> ”conflicto” Subversion le pregunta aAna, pues es la última que ha tocao el texto.
Introducción a Subversion
No me fío de svn y sus movidas...
●
Siempre puedes revisar los datos antes de que se suban al repositorio. Tu set de modificaciones nunca quedará a medio subir: atomicidad (todo o nada). Antes de subir nada, svn siempre comprueba si otra persona ha tocado el repositorio.
???
●
●
Introducción a SubversionVamos a lo práctico
●
Subir mis cambios al repositorio:
– – –
svn diff //muestra todas las lineas cambiadas echo ”svn diff $* |colordiff |less -R” >> svndiff.sh svn commit//saca tu $EDITOR pa que escribas un //resumen de tus cambios, y de seguido los sube // si nadie ha cambiado los mismos ficheros Ej. de log:
revision 42 bugfixed input validator (mantis id: 01183). refactored database:now using DNI as PK in Users table. added spellchecker to contact form.
–
Introducción a Subversion
...y si han tocado los ficheros?
yo: quiero subir mis cambios svn commit
yo: ah. cuáles son? svn update yo: a ver cómo me has dejao el tinglao... svn diff
opcional: oh, hay conflictos! los resuelvo.
svn: quieto parao! hay modificaciones en el repo svn: pues.. te las integro en tucopia local
vi file.txt svn resolved file.txt
yo: todo ok. quiero subir mis cambios once again svn commit
svn: ahora sí que los subo :-D he creado una nueva ”revision”
Introducción a Subversion
¿Qué es eso de las revisiones?
●
●
● ●
Numero entero incremental asignado a cada modificacion (commit). Repository-wide: un commit incrementa la revision de todos los ficheros ydirectorios del repo. ”head” es un alias para la ultima revision. Muchos comandos svn aceptan elegir la revision. Ej: -r 120 -r 120:146 -r 120:head
Introducción a Subversion
Comandos basicos
●
●
Crear una copia local del repositorio (al ppio): svn checkout Eliminar una copia local (al final): rm -rf Hacer cambios locales: vi file1 file2 :wqa Eliminar cambios locales: svn revertfile{1,2} //elegantemente rm file{1,2}; svn update file{1,2} //warramente
●
●
Introducción a Subversion
Comandos basicos II
●
●
Añadir, eliminar, copiar, mover, renombrar: svn add/rm/cp/mv/mkdir ... Se mantiene el historial! add cp mv (editar) rm
file.hpp file.hpp
mv
file.hpp file.cpp
test.cpp
file.cpp
file.cpp
file.cpp
file.cpp
r1
r2
r3
r4
r5...
Regístrate para leer el documento completo.