Bazaar: Nueva generacion de sistemas de versionamiento distribuido Martin Albisetti

Slides:



Advertisements
Presentaciones similares
Subversion (SVN) Sistema de Control de Versiones Sucesor de CVS
Advertisements

Control de versiones con Subversion
Agenda Problemas Comunes
INSTALACIÓN Y MANTENIMIENTO SO ADMINISTRACIÓN SO LINUX.
Subversion (SVN) Sistema de Control de Versiones Sucesor de CVS.
Maven Build & Deployment Part II
Uso de TortoiseSVN Gerencia SCM.
Administración de Software Administración de Software / Casos Reales Pág 1 La seguridad físca PROGRAMACION CASOS DE LA VIDA REAL.
Concurrent Versions System Daniel Vergara C. Rodrigo Yañez Q.
Sistemas de Control de Versiones
Ing. De la Puente, Matias Sistema de control de versiones GIT
Sistema de control de versiones CVS y Subvesion. Definición: Control de versiones Un sistema de control de versiones es un sistema de gestión de múltiples.
Control de Versiones Utilizando SVN. ELO329 - Diseño y Programación Orientado a Objetos 2 Control de Versiones ”Se llama control de versiones a la gestión.
Control de versiones y Subversion José Luis López Pino Fco Javier Lucena Lucena.
Disseny de Base de Dades Un paseo por OpenERP Jordi Gálvez Santos 11/12/2008.
Proyecto ROOTVE V2: Control de versiones con Subversion Grupo de Investigación y Desarrollo en Seguridad de la Información - GIDSI.
Debian: una distribución hecha por voluntarios como vos Margarita Manterola
YUM jitsu Neville A. Cross Embajador de Fedora
PRESENTACIÓN DRUPAL Versión 0.1 Por Ricardo Chang.
Primer Taller de desarrollo con Software Libre Posadas - Misiones José Luís Di Biase Héctor Daniel Sanchez
Sistemas de Control de Versiones (SCMs) Introducción a los conceptos de control de versiones Introducción a las herramientas darcs y svn Margarita Manterola.
Hojas de Estilo en Cascada CSS RAFAEL MOURGLIA. CSS son las siglas de Cascade Style Sheet que traducido significa hojas de estilo en cascada. Las hojas.
Empaquetamiento de RPM. Que es un archivo RPM? Un archivo rpm es formato de archivo definido para el manejador de paquetes rpm y en esencia es un archivo.
Administración de la configuración (SCM) Introducción Control de versiones Analisis y diseño USAC Por: Víctor Orozco
COMUNICACIÓN Y TIC Ángela Espinosa Hayler Peñaranda.
Computación e Informática Contabilidad Ing. Miguel Ángel Ramos Frías Word 2013.
Compartir carpetas, Crear Cuotas. Existen varias maneras de compartir carpetas Botón secundario sobre una carpeta, propiedades y en compartir. Botón secundario.
Gestor de paquetes Instalar y eliminar software (GUI y consola)
BASE DE DATOS EN LA WEB POR- OSIRYS MARCIAGA JESUS NIETO.
SISTEMAS OPERATIVOS (II): WINDOWS
V 14: Nuevos Procedimientos
ALFRESCO.
Áreas de Trabajo y Caso Hipotético
MANEJO DE TEXTO Y OBJETOS AVANZADOS ENCABEZADOS Y PIES DE PÁGINA
Linux Objetivo: El alumno conocerá la importancia del sistema operativo Linux, así como sus funciones.
Conociendo un Ubuntu: Una distribución diferente a Linux
PROGRAMACION.
Introducción al Proyecto
It Hub CONTROLADOR DE VERSIONES Electiva I.
CMS: sistema de Gestión de Contenidos
FORMACIÓN GIT “setting” a dalt!.
GRUPO 15 SC FRAMEWORK LARAVEL
Introducción a Sistemas Operativos (clase práctica)
GRUPO 18 GIT INTEGRANTES: JALDIN PANIAGUA LUIS MIGUEL
GNU LINUX APRENDIENDO A USAR LA TERMINAL ISC. HIRAM GUERRERO CASTILLO
¿Qué es un resumen? Un resumen es reducir el texto original a solo las ideas mas importantes o lo que es de interes para el lector.
Miguel García Ruiz Jackeline Giraldo Urrea
INSTALACION LINUX UBUNTU
MANEJO DE ARCHIVOS DIGITALES
Tutorial Holdings Management (Administración de Colecciones)
CURSO: QUITO “D” FÍSICO MATEMÁTICO
Actividad 3 Herramienta tarea
KUbuntu Carlos Torres Denis González 7 de septiembre de 2015.
ETC 2017 Gestión de Proyectos Software con herramientas libres
Instalaciones Desatendidas
It Hub CONTROLADOR DE VERSIONES Aplicaciones Web I.
Las licencias.
Comandos de Linux Luna Luna Francisco Jesús
Sistemas de control de versiones
EXPLORADOR DE WINDOWS 7. Explorador de Windows El Explorador es una herramienta indispensable en un Sistema Operativo ya que con ella podemos organizar.
HIPERVÍNCULO Escarlet Hernández Casas 1F MATUTINO.
HIPERVÍNCULO Berenice Avelar Torres ¿QUÉ ES ? La función HIPERVINCULO crea un acceso directo que salte a otra ubicación en el libro actual o se abre.
¿Qué es un hipervínculo? Fabiola Yazmin Gómez Torres. 1.F t/m BGC.
Tecnologías de la Información 1 Paola Noemí Padilla Almejo 1ºA T/M.
HERRAMIENTAS BASICAS DISEÑO SITIOS WEB. CARACTERÍSTICAS Básicamente una página web puede construirse con un simple editor de texto (como puede ser el.
INDICE ¿QUE ES LINUX? HISTORIA DE LINUX CARACTERISTICASUTILIDADES VENTAJAS Y DESVENTAJAS CONTENIDO DE LINUX ¿QUE ES MS-DOS? FUNCIONES DE MS-DOS.
ADMINISTRACIÓN DE SOFTWARE DE UN SISTEMA INFORMÁTICO LINUX SBACKUP.
Gestión de Recursos compartidos.. Aspectos fundamentales del usó compartido Existen dos maneras de compartir archivos y carpetas: desde el equipo y desde.
GOOGLE DOCS GERMAN ANDRES MARTINEZ DÁVILA SELENA CERÓN BUITRAGO.
Transcripción de la presentación:

Bazaar: Nueva generacion de sistemas de versionamiento distribuido Martin Albisetti

Informacion General ● Hecho completamente desde cero ● Integramente desarrollado en Python ● Financiado por Canonical ● GPL v2 and newer! :D ● Muy facil de agregar funcionalidades ● Comunidad muy amigable ● En constante desarrollo

Conceptos Basicos

Revision ● Una foto del arbol de archivos y directorios, incluyendo su contenido y estado ● Incluye metadata: – fecha creado – autor – mensaje del commit – ancestro de cada archivo – mas cosas :D

Working Tree ● Un directorio versionado que contiene archivos y directorios que el usuarios puede editar ● Muchos comandos usan el Working Tree como su contexto – e.j. commit hace una nueva revision usando el contenido actual del Working Tree

Branch ● Una serie de revisiones ordenadas ● La ultima revision de un branch es llamada “head” ● Los Branches pueden ser separados y vueltos a “unir” mas adelante ● Los Branches estan relacionados si tienen “ancestros comunes”

Repository ● Donde se guardan las revisiones ● Por defecto, cada Branch tiene su propio repositorio – para ahorrar disco y optimizar, los Branches pueden compartir repositorios

Empezando desde el principio Instalar, Configurar e Interfaz

Instalando Bazaar ● Paquetes para Linux disponibles: – Ubuntu/Debian (apt) – Redhat/Fedora (yum) ● Otros sistemas operativos: – Windows – instalador disponible – Mac OS X – MacPorts o Fink – Free BSD - FreshPorts

Configurando Bazaar ● Nos presentamos a Bazaar... – bzr whoami “ ● Verifiquemos... – bzr whoami ● o – vi ~/.bazaar/bazaar.conf

Ejecutando Comandos ● Sintaxis general: – bzr comando opciones/argumentos ● A tener en cuenta: – Las opciones pueden aparecer antes o despues de los argumentos – Las opciones globales tambien

Comandos Comunes ● -h, --help ● -v, --verbose ● -q, --quiet ● -r, --revision ● ayuda! ● mostrar mas info ● mostrar menos info ● elegir rango de revisiones: x..y – incluye x – excluye y – ambos opcionales

Aliases de Comandos ● Muchos comandos tienen aliases: – escribimos menos :D – mas facil para usuarios de SVN o CVS ● Podes crear los tuyos: [ALIASES] diffm=diff –-using meld

Plugins ● Los plugins agregan comandos, mas opciones, formatos y funcionalidades completamente nuevas

Interfaces Graficas

Ayuda! ● Bazaar viene con la ayuda integrada ● Para ver los temas disponibles: – bzr help ● Ayuda de un comando especifico: – bzr help xxx

Control de Versionamiento Personal Quien digo que los SCV son solo para equipos?

Empezando un Proyecto ● Versionando un proyecto existente: – cd super_proyecto – bzr init – bzr add – bzr commit -m “Inicio del Versionamiento” ● Una copia de todos los archivos estan almacenados en el directorio.bzr – Solo en el directorio superior (en contraste con cvs/svn)

Ver nuestros cambios ● Cambios realizados: – bzr status ● Diferencias reales: – bzr diff

Versionando archivos y directorios ● Versionar todos los archivos y directorios: – bzr add ● Registrar *algunos* archivos y directorios: – bzr add foo.py bar/

Registrando tus Cambios ● Registrar todos los cambios: – bzr commit ● Registrando solo algunos cambios: – bzr commit README doc/ ● El comando -m se usar para darle el mensaje directamente desde la linea de comando – en caso contrario se abre un editor de texto

Deshacer Cambios ● Des-versionando un archivo: – bzr remove foo.py ● Deshacer el ultimo commit: – bzr uncommit ● Deshacer todos los cambios desde el ultimo commit: – bzr revert – bzr revert foo.py

Viendo nuestro Historial ● Historial de este Branch: – bzr log ● Historial resumido: – bzr log --short ● Interfaces graficos disponibles... ● bzr-gtk (GNOME) – bzr visualize ● Qbzr (KDE) – bzr qlog

Viendo el Historial de un Archivo ● Mostrar cambios que afectar foo.py: – bzr log foo.py ● Contenido de foo.py en la Revision X: – bzr cat -r X foo.py

Comandos Principales ● Mas usados: init add commit status diff log export ● Otros comandos: remove uncommit revert cat tag mv

Compartiendo Dos cabezas son mejor que una

Creando un Branch nuevo ● Clonar un Branch existente: – bzr branch URL [directorio] ● Por defecto el nombre del directorio se toma de la ultima parte de la URL ● Ejemplos: – bzr branch /home/jbazaar/super-dev – bzr branch /home/jbazaar/super-dev mega – bzr branch – bzr branch

Volviendo a Unir cambios ● Para tomar los cambios de otro branch usamos el comando merge: – bzr merge [URL] ● Si omitimos la URL, se usa la URL del Branch padre

Conflictos :( ● Algunas operaciones solo pueden ser realizadas con la intervencion de una persona ● Si el comando merge reporta problemas, crea tres archivos: ● foo.THIS ● foo.OTHER ● foo.BASE

Resolviendo Conflictos Marcadores Claro: >> MERGE-SOURCE ● Despues de editar, los damos por resueltos: – bzr resolve ● Para dar por resuelto foo.py: – bzr resolve foo.py

Quien hizo que? ● Cuando desarrollan una o mas personas, a veces es util saber quien hizo que – bzr annotate foo.py ● Tambien disponible en forma grafica con el plugin bzr-gtk – bzr gannotate foo.py

Desarrollando en Equipo Hay mas de una forma para hacer lo mismo!

Enviando Branches ● La forma mas facil para compartir nuestro branch es hacer un “push” a un lugar compartido ● Comunmente se usa: – discos compartidos (Windows/Samba, NFS) – servidores web (via sftp o ftp) ● Ejemplos: – bzr push x:\proyectos\super – bzr push sftp://jbazaar.su/public_html/super

Administrando Branches ● A veces se nos pueden acomular muchos branches del mismo proyecto ● Para saber mas del branch: – bzr info ● Bautizar un branch: – bzr nick super-funcionalidad-nueva ● Comprar con el Branch padre: – bzr missing

Checkouts ● Un working tree que esta unido al branch remoto ● Commits en un checkout: – Verifica que el working tree este actualizado – guarda primero en el branch remoto ● Para hacer un checkout: – bzr checkout URL ● Crear un checkout sin un branch local: – bzr checkout --lightweight URL

Checkouts ● Unificar los cambios desde el branch padre: – bzr update ● Una vez que estamos actualizados con el branch padre podes hacer un commit: – bzr commit

Ayudando en la Comunidad Open Source El podes a la gente

Cambiando las reglas de la Comunidad... ● SCV Central: – solo pueden mandar cambios los dev. principales – solo ellos le sacan el jugo al SCV – el resto de los dev. manda parches ● SCV Distribuido: – solo pueden mandar cambios los dev. principales – todo el mundo le gana con el SCV – el resto de la gente manda sus branches (o bundles)

Los Desarrolladores Secundarios ganan ● SCVD elimina la barrera tecnica entre los que pueden mandar cambios y los que no ● La cuestion pasa a ser a donde pueden mandar sus cambios: – solo su branch? – el branch del equipo? – el branch principal? ● La barrera que queda es social

Los Desarrolladores Principales ganan tambien ● Menos administracion: – compartir y unificar ya no requiere otro branch mas – cada branch es un backup completo :D ● Mas flexibilidad: – podemos compartir nuestros cambios con cualquiera, no solo el branch principal – si usamos Bazaar, se puede cambiar el flujo de trabajo a medida que evoluciona la comunidad sin cambiar de herramienta

Hay mucho mas! ● Algunas cosas que no cubrimos: – Integracion con IDEs y sistemas de manejos de archivos – Smart servers – Nested trees – Testaments (firmar commits con gpg) – Branches externos (e.j. bzr-svn) – Programar para Bazaar

Web Sites ● Web site principal: – ● Launchpad – Bug tracking, etc: – (Bazaar related) – (Bazaar core) ● Documentacion oficial: –

La Comunidad Bazaar Internet Relay Chat: – #bzr en irc.freenode.net Listas de correo: – Ver el site principal Nuevos contribuidores bienvenidos!

Gracias! nick irc: beuno