2. ¿Qué es el control de versiones?
”El control de versiones es el arte del manejo
de los cambios en la información”.
Herramienta crítica para los programadores.
Facilita volver a una versión anterior.
Facilita el trabajo colaborativo.
Se envían sólo las diferencias realizadas.
El control de versiones no sólo es necesario
para el software.
4. Clasificación: centralizados
Un poco más sencillos de utilizar que los
distribuidos.
Se tiene un control total sobre las versiones.
Limitaciones en el acceso.
Puede haber menos conflictos a resolver.
Ejemplos: CVS y Subversion.
5. Clasificación: distribuidos
Se puede trabajar de forma local.
Operaciones locales más rápidas.
No necesitas permiso para participar en los
proyectos.
No se depende de una sola máquina física.
Puedes seguir teniendo un control centralizado
del proyecto.
Ejemplos: Git, Bazaar y Mercurial.
6. Herramientas
svn Cliente de línea de comandos.
svnversion Estado de la copia de trabajo.
svnlook Inspeccionar un repositorio.
svnadmin Crear, modificar o reparar repos.
svnserve Servidor.
7. Acciones comunes
Copia de trabajo (working copy):
Copia local y privada de los archivos y directorios
del repositorio. A ella se incorporarán los cambios
o pondrán a disposición los tuyos cuando tú se lo
indiques.
Revisión (revision):
Es una “instantánea” del repositorio en un
momento particular en el tiempo, cada vez que el
servidor acepta un envío se crea una nueva
revisión.
Para identificarlas se utilizan números desde el 0.
8. Acciones comunes
Crear copia de trabajo svn checkout
Ver diferencias svn diff
Deshacer cambios locales svn revert
Subir nueva versión svn commit
Sincronizar con repos. svn update
Mensajes de log svn log
Gestionar ficheros svn add | delete
Copiar Mover svn move | copy
Ver ficheros modificados svn status
¡Ayuda! svn help
9. Estructura común del repositorio
Hay maneras estándar recomendadas para
organizar un repositorio.
/trunk contendrá la “línea principal”
/branches copias de las ramas
/tags copias de las etiquetas
13. Conflictos
$ svn update
U INSTALL Actualizado
G README Unido
C bar.c ¡Conflicto!
Updated to revision 46.
Cuando se produce conflicto nos encontramos:
filename.mine ”Mi” archivo
filename.rOLDREV Versión original de la mía.
filename.rNEWREV Versión actual en el repos.
14. Solucionando conflictos
Tenemos tres opciones:
Fusionar el texto en conflicto “a mano” y marcar el
conflicto como resuelto (svn resolved).
Copiar uno de los ficheros temporales sobre su
fichero de trabajo y marcar como resuelto.
Eliminar cambios locales (svn revert).
15. Ramas
Rama (branch):
Línea de desarrollo que existe de forma
independiente a otra, pero comparte una historia
común si mira suficientemente atrás en el tiempo.
16. Ramas
Subversion tiene comandos para ayudarle a
mantener ramas paralelas de sus ficheros y
directorios.
Nos evitan duplicar cambios en varias ramas.
Permiten mezclar y probar diferentes líneas de
desarrollo en su trabajo diario.
17. Operaciones con ramas
Crear una rama svn copy
Unir dos fuentes svn merge
Ver diferencias antes de unir svn diff
Trasladarnos a otra rama svn switch
18. Etiquetas
Etiqueta (tag):
Una etiqueta no es más que una instantánea
(snapshot) del proyecto en un momento de tiempo.
Realmente cada revisión ya es una instantánea,
pero con las etiquetas le ponemos nombres más
bonitos y pueden ser de sólo un subdirectorio.
En subversion, una etiqueta es realmente una
nueva rama que creamos y lo almacenamos en un
lugar diferente (/tags) y no realizamos cambios en
ella.
Al igual que las ramas, las creamos con
svn copy
19. Clientes visuales
RabbitVCS (Nautilus)
KDESvn (Konqueror)
TortoiseSVN (Windows)
RapidSVN (Linux, Windows y MacOS)
Cliente integrado con los distintos EDS.