El sistema de control de versiones Mercurial
Basado en la presentaci´on hom´onima de Bryan O’Sullivan
Germ´an Poo Caama˜no
[email protected]
OpenCommunity 2007
Agenda
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Demo
Consultas
1 Preliminares
Conceptos
Ayudarme a trabajar con otras personas
Permitirme trabajar eficientemente
Mercurial
Germ´an Poo Caama˜no
Mercurial
Agenda
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Demo
Consultas
1 Preliminares
Conceptos
Ayudarme a trabajar con otras personas
Permitirme trabajar eficientemente
Mercurial
2 Demo
Germ´an Poo Caama˜no
Mercurial
Agenda
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Demo
Consultas
1 Preliminares
Conceptos
Ayudarme a trabajar con otras personas
Permitirme trabajar eficientemente
Mercurial
2 Demo
3 Consultas
Germ´an Poo Caama˜no
Mercurial
El proyecto
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Comienza en abril de 2005
95 % del c´odigo en Python
Apr´oximadamente 750 l´ıneas en C, para obener mayor
velocidad.
R´apido crecimiento
Germ´an Poo Caama˜no
Mercurial
Suposiciones
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Quieres administrar algunos archivos
C´odigo fuente
Sitio web
Directorio home
Una novela
No te asusta el shell o l´ınea de comandos
Germ´an Poo Caama˜no
Mercurial
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Proyectos que usan Mercurial
OpenSolaris
Mozilla
Xen
e2fsprogs
ALSA
video4linux
One Laptop Per Child
Moin Moin
FreeBSD ports
...
Germ´an Poo Caama˜no
Mercurial
Sistemas de control de versiones
Est´a lleno de ellos
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
BitKeeper
ClearCase
Perforce
Arch
Bazaar-NG
Darcs
git
Subversion
CVS
Germ´an Poo Caama˜no
Mercurial
Perspectiva del desarrollador
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Debe ser f´acil de entender
Ayudarme a trabajar con otras personas
Permitirme trabajar eficientemente
Germ´an Poo Caama˜no
Mercurial
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Debe ser f´acil de entender
Conceptos
Repositorio
Changeset (conjunto de cambios)
Directorio de trabajo
Germ´an Poo Caama˜no
Mercurial
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Repositorio
Caracter´ısticas
Sencillo
Un directorio que contiene la historia del proyecto
No hay base de datos especial, ni servidor central
Ligero
Hace una copia de un repositorio (clone) es econ´omico
Omnipresente
Todo el desarrollo se realiza en repositorios y cada cual trabaja en
sus propios repositorios
Germ´an Poo Caama˜no
Mercurial
Repositorio
Contenido de un repositorio
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Mercurial no expone estos detalles, s´olo sirve para saber como
funciona por dentro.
ChangeLog (registro de cambios). Historia de cambios al
repositorio.
Manifiesto. Historia de las versiones usado en cada
changeset.
Datos por cada archivo. Historia de cada archivo.
Germ´an Poo Caama˜no
Mercurial
Repositorio
Comparaci´on
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Repositorio central Exactamente uno
Cuello de botella
Gesti´on de carga
Usuarios remotos
Fallo del servidor
Servidor central
Caro o imposible
Lento
Catastr´ofica
Los necesarios
Ninguno
Los que se quieran
Respuesta r´apida local
Respaldo completo del repo
Germ´an Poo Caama˜no
Mercurial
ChangeSet
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Una instant´anea del proyecto en un momento determinado
Contenidos:
Autor del cambio (committer)
Descripci´on del cambio
Archivos que se modificaron
Cambios que se realizaron
Identificaci´on del padre de los cambios
A la creaci´on de un changeset se le llama commit
Germ´an Poo Caama˜no
Mercurial
Directorio de trabajo
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Una vista del repostorio en un determinado changeset
Dicho changeset es el padre del directorio
Se puede editar cualquier archivo en el directorio
Los cambios ir´an en el siguiente changeset
Se puede a˜nadir, eliminar, renombrar o copiar archivos
Se puede ver qu´e se ha cambiado y como
Germ´an Poo Caama˜no
Mercurial
Gu´ıa r´apida
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
$ hg init myrepo # Crear un repositorio
$ cd myrepo
$ vi myfile
$ hg add myfile
$ hg status
$ hg commit
# Entra en ´el
# Editar un archivo
# Agregar archivo al repositorio
# Estado del archivo
# Guardar los cambios
Germ´an Poo Caama˜no
Mercurial
Perspectiva del desarrollador
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Debe ser f´acil de entender
Ayudarme a trabajar con otras personas
Permitirme trabajar eficientemente
Germ´an Poo Caama˜no
Mercurial
Ayudarme a trabajar con otras personas
Trabajo paralelo
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Es la forma natural de trabajar, a veces los sistemas de control de
versiones lo hacen dif´ıcil
Realizo algunos cambios
Los guardo (commit)
Germ´an Poo Caama˜no
Mercurial
Ayudarme a trabajar con otras personas
Resoluci´on de conflictos
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
¿Qu´e sucede si alguien guard´o cambios antes?
Es necesario conciliar los cambios (merge) antes de guardar
(commit)
Los cambios no se han guardado en forma permamente
Un error al conciliar los cambios puede hacer que pierda el
trabajo realizado
Germ´an Poo Caama˜no
Mercurial
Manejo de ramas de Mercurial
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
No olvidar que un changeset tiene un padre.
Dos changeset de con el mismo padre forman una rama.
Eso es una rama.
Germ´an Poo Caama˜no
Mercurial
Manejo de ramas de Mercurial
Fusi´on de cambios (merge)
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Algunos changesets tienen dos ramas
Esos changesets son de fusi´on (merge)
Un changeset de conciliaci´on simplemente indica:
“As´ı reconcili´e los changesets A y B”
Germ´an Poo Caama˜no
Mercurial
Ayudarme a trabajar con otras personas
Desarrollo con m´as personas
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Mercurial soporta de manera natural el trabajo en paralelo
Cada uno guarda los cambios cuando le parezca
Los cambios son limpios y autocontenidos
No se fusionan los cambios de otro de no haber guardado
primero los propios
Germ´an Poo Caama˜no
Mercurial
Ayudarme a trabajar con otras personas
Fusi´on de cambios
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
¿Y si me equivoco al fusionar los cambios?
No importa, los cambios a´un est´an ah´ı, as´ı que los tienes
No se pierde ning ´un trabajo
Simplemente se hace una refusi´on
Germ´an Poo Caama˜no
Mercurial
Ayudarme a trabajar con otras personas
Compartir es f´acil
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Servidor web incluido
Integraci´on con Apache v´ıa CGI
Utiliza ssh para acceso remoto seguro
Se puede compartir el trabajor por email, pendrive, etc.
Germ´an Poo Caama˜no
Mercurial
Ayudarme a trabajar con otras personas
Compartir es sim´etrico
Mercurial
Germ´an Poo
Caama˜no
Agenda
Preliminares
Conceptos
Ayudarme a trabajar
con otras personas
Permitirme trabajar
eficientemente
Mercurial
Demo
Consultas
Clonar (clone) un repositorio para tener una copia local
Traer (pull) los nuevos cambios de un repositorio remoto
Llevar (push) los cambios a un repositorio remoto
Despu´es de un push, el repositorio remoto es id´entico al m´ıo
Germ´an Poo Caama˜no
Mercurial
Gu´ıa r´apida (# 2)
$ hg comit # He guardado mis cambios
$ hg push
# Propago mis cambios a otro
abort...
hg indica que fusione
$ vi pull # Traigo cambios remotos
$ hg merge # Fusiono los cambios
$ hg commit# Guardo los cambios
$ hg push
# Propago mis cambios a otro
Mercurial
Germ´an Poo
Caama˜no
Comentarios de: El sistema de control de versiones Mercurial - Basado en la presentación homónima de Bryan O'Sullivan (0)
No hay comentarios