El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la...

37
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

Transcript of El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la...

Page 1: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

El sistema de control de versiones MercurialBasado en la presentacion homonima de Bryan O’Sullivan

German Poo [email protected]

OpenCommunity 2007

Page 2: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

Preliminares

Demo

Consultas

Agenda

1 PreliminaresConceptosAyudarme a trabajar con otras personasPermitirme trabajar eficientementeMercurial

2 Demo

3 Consultas

German Poo Caamano Mercurial

Page 3: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

Preliminares

Demo

Consultas

Agenda

1 PreliminaresConceptosAyudarme a trabajar con otras personasPermitirme trabajar eficientementeMercurial

2 Demo

3 Consultas

German Poo Caamano Mercurial

Page 4: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

Preliminares

Demo

Consultas

Agenda

1 PreliminaresConceptosAyudarme a trabajar con otras personasPermitirme trabajar eficientementeMercurial

2 Demo

3 Consultas

German Poo Caamano Mercurial

Page 5: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

El proyecto

Comienza en abril de 2005

95 % del codigo en Python

Aproximadamente 750 lıneas en C, para obener mayorvelocidad.

Rapido crecimiento

German Poo Caamano Mercurial

Page 6: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Suposiciones

Quieres administrar algunos archivosCodigo fuenteSitio webDirectorio homeUna novela

No te asusta el shell o lınea de comandos

German Poo Caamano Mercurial

Page 7: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Proyectos que usan Mercurial

OpenSolaris

Mozilla

Xen

e2fsprogs

ALSA

video4linux

One Laptop Per Child

Moin Moin

FreeBSD ports

...

German Poo Caamano Mercurial

Page 8: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Sistemas de control de versionesEsta lleno de ellos

BitKeeper

ClearCase

Perforce

Arch

Bazaar-NG

Darcs

git

Subversion

CVS

German Poo Caamano Mercurial

Page 9: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Perspectiva del desarrollador

Debe ser facil de entender

Ayudarme a trabajar con otras personas

Permitirme trabajar eficientemente

German Poo Caamano Mercurial

Page 10: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Debe ser facil de entenderConceptos

Repositorio

Changeset (conjunto de cambios)

Directorio de trabajo

German Poo Caamano Mercurial

Page 11: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

RepositorioCaracterı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 economico

Omnipresente

Todo el desarrollo se realiza en repositorios y cada cual trabaja ensus propios repositorios

German Poo Caamano Mercurial

Page 12: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

RepositorioContenido de un repositorio

Mercurial no expone estos detalles, solo sirve para saber comofunciona por dentro.

ChangeLog (registro de cambios). Historia de cambios alrepositorio.

Manifiesto. Historia de las versiones usado en cadachangeset.

Datos por cada archivo. Historia de cada archivo.

German Poo Caamano Mercurial

Page 13: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

RepositorioComparacion

Repositorio central Exactamente uno Los necesariosCuello de botella Servidor central NingunoGestion de carga Caro o imposible Los que se quieranUsuarios remotos Lento Respuesta rapida localFallo del servidor Catastrofica Respaldo completo del repo

German Poo Caamano Mercurial

Page 14: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

ChangeSet

Una instantanea del proyecto en un momento determinadoContenidos:

Autor del cambio (committer )Descripcion del cambioArchivos que se modificaronCambios que se realizaronIdentificacion del padre de los cambios

A la creacion de un changeset se le llama commit

German Poo Caamano Mercurial

Page 15: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Directorio de trabajo

Una vista del repostorio en un determinado changesetDicho changeset es el padre del directorio

Se puede editar cualquier archivo en el directorioLos cambios iran en el siguiente changesetSe puede anadir, eliminar, renombrar o copiar archivos

Se puede ver que se ha cambiado y como

German Poo Caamano Mercurial

Page 16: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Guıa rapida

$ hg init myrepo # Crear un repositorio$ cd myrepo # Entra en el$ vi myfile # Editar un archivo$ hg add myfile # Agregar archivo al repositorio$ hg status # Estado del archivo$ hg commit # Guardar los cambios

German Poo Caamano Mercurial

Page 17: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Perspectiva del desarrollador

Debe ser facil de entender

Ayudarme a trabajar con otras personas

Permitirme trabajar eficientemente

German Poo Caamano Mercurial

Page 18: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Ayudarme a trabajar con otras personasTrabajo paralelo

Es la forma natural de trabajar, a veces los sistemas de control deversiones lo hacen difıcil

Realizo algunos cambios

Los guardo (commit)

German Poo Caamano Mercurial

Page 19: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Ayudarme a trabajar con otras personasResolucion de conflictos

¿Que sucede si alguien guardo 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 eltrabajo realizado

German Poo Caamano Mercurial

Page 20: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Manejo de ramas de Mercurial

No olvidar que un changeset tiene un padre.

Dos changeset de con el mismo padre forman una rama.

Eso es una rama.

German Poo Caamano Mercurial

Page 21: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Manejo de ramas de MercurialFusion de cambios (merge)

Algunos changesets tienen dos ramas

Esos changesets son de fusion (merge)

Un changeset de conciliacion simplemente indica:“Ası reconcilie los changesets A y B”

German Poo Caamano Mercurial

Page 22: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Ayudarme a trabajar con otras personasDesarrollo con mas personas

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 guardadoprimero los propios

German Poo Caamano Mercurial

Page 23: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Ayudarme a trabajar con otras personasFusion de cambios

¿Y si me equivoco al fusionar los cambios?

No importa, los cambios aun estan ahı, ası que los tienes

No se pierde ningun trabajo

Simplemente se hace una refusion

German Poo Caamano Mercurial

Page 24: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Ayudarme a trabajar con otras personasCompartir es facil

Servidor web incluido

Integracion con Apache vıa CGI

Utiliza ssh para acceso remoto seguro

Se puede compartir el trabajor por email, pendrive, etc.

German Poo Caamano Mercurial

Page 25: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Ayudarme a trabajar con otras personasCompartir es simetrico

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

Despues de un push, el repositorio remoto es identico al mıo

German Poo Caamano Mercurial

Page 26: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Guıa rapida (# 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

German Poo Caamano Mercurial

Page 27: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Perspectiva del desarrollador

Debe ser facil de entender

Ayudarme a trabajar con otras personas

Permitirme trabajar eficientemente

German Poo Caamano Mercurial

Page 28: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Permitirme trabajar eficientemente

Mercurial es muy rapido

La arquitectua de archivos reduce las busquedas

Las operaciones habituales no requieren esperar

Todos los datos son locales⇒ No es necesario esperar a lared

Los metadatos se comparten entre todos los repositorioslocales

German Poo Caamano Mercurial

Page 29: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

El tamano importa

Los fuentes del kernel tienen un tamano de 262MB (solo elcodigo fuente sin historial)1 ano de desarrollo de Linux con Mercurial

19500 archivos controlados27500 changesets (1840 fusiones)1000 colaboradores

Historia completa: 293 MB

German Poo Caamano Mercurial

Page 30: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Permitirme trabajar eficientementeMercurial me hace mas eficiente

Los conceptos simples permiten concentrarse⇒ Pensarmenos en el SCM, pensar en el trabajo

commit y merge estan separados⇒ Es difıcil perder oestropear algo accidentalmente

Los repositorios baratos facilitan las tareas⇒ Un repositoriopor tarea

Todos los datos son locales⇒ No es necesario esperar a lared

Los repositorios locales permiten trabajar en cualquier lugar

German Poo Caamano Mercurial

Page 31: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Por que es importante la eleccion de la herramienta

Las herramientas cambian la forma de trabajarRCS/SCCS: tengo que estar registrado en una maquina paratrabajarCVS/SVN: tengo que estar conectado para trabajarSCM distribuidos: puedo trabajar en cualquier sitio, encualquier momento

Tus herramientas cambian la forma que otros deban trabajarcontigo

RCS/SCCS: “los de fuera” no ven la historiaCVS/SVN: “los de fuera” pueden leer pero no escribirSCM distribuidos: no existen “los de fuera”

German Poo Caamano Mercurial

Page 32: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Rompiendo los prejuicios

Quiero algo sencillo

Las mejores herramientas distribuidas son mas sencillas quelas centralizadas

¿Prefieres un modelo centralizado? Simplemente usa de esaforma la herramienta

German Poo Caamano Mercurial

Page 33: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

PreliminaresConceptos

Ayudarme a trabajarcon otras personas

Permitirme trabajareficientemente

Mercurial

Demo

Consultas

Fundamentalmente y absolutamente mejores que lasherramientas centralizadas

Eliminan la distincion entre “tener” / “no tener”

Elegir el modelo de desarrollo preferido

Cualquier usuario se convierte en un potencial colaborador

Una buena practica de ramificaciones y fusiones, permitenescalar en funcion del exito

German Poo Caamano Mercurial

Page 34: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

Preliminares

Demo

Consultas

Ejemplos

Demostracion

German Poo Caamano Mercurial

Page 35: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

Preliminares

Demo

Consultas

Consultas

¿Preguntas?

German Poo Caamano Mercurial

Page 36: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

Preliminares

Demo

Consultas

Referencias

R. Villar Burke.Control de Versiones con Mercurial (I) - Conceptos generales.

R. Villar Burke.Control de Versiones con Mercurial (II) - Uso de Mercurial.

R. Villar Burke.Control de Versiones con Mercurial (III) - Publicacion deProyectos.

B. O’SullivanDistributed revision control with Mercurial.

German Poo Caamano Mercurial

Page 37: El sistema de control de versiones Mercurial - …...Por que es importante la elecci´ on de la herramienta´ Las herramientas cambian la forma de trabajar RCS/SCCS: tengo que estar

Mercurial

German PooCaamano

Agenda

Preliminares

Demo

Consultas Gracias

German Poo Caamano Mercurial