• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Repositorios de control de versiones Distribuidos: Git
 

Repositorios de control de versiones Distribuidos: Git

on

  • 1,024 views

Charla sobre DVCS. Mas concretamente explicaciones de las cualidades de Git.

Charla sobre DVCS. Mas concretamente explicaciones de las cualidades de Git.

Statistics

Views

Total Views
1,024
Views on SlideShare
1,018
Embed Views
6

Actions

Likes
4
Downloads
23
Comments
0

1 Embed 6

https://twitter.com 6

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Repositorios de control de versiones Distribuidos: Git Repositorios de control de versiones Distribuidos: Git Presentation Transcript

    • Repositorios de control de versionesdistribuidos
    • Sobre mi @ialcazar http://farmerdev.comFreelance spainjs.org   madridjs.org  
    • UN POCO DE HISTORIA
    • Introducción a los VCS1972: Source Code Control System (SCCS): Códigocerrado, libre con Unix.1982: Revision Control System (RCS) : Multiplataforma.Open Source. Mas funcionalidades y mas rápido. Solo podía trabajar con un fichero a la vez.1986-1990: Concurrent Versions System (CVS): Trabajode múltiples usuarios en el mismo fichero. Open Source.
    • Introducción a los VCS2000: Apache Subversion. Snapshot de un directorio nosolo de un fichero. Commits transaccionales. Más rápido.2000: BitKeeper SCM. Código cerrado, propietario. Controlde versiones distribuido. Versión para la comunidad era gratis. Utilizado por elproyecto del kernel de Linux en 2002-2005.Abril 2005: Versión comunidad deja de ser libre.
    • Git Hits§  Git nace en 2005§  GitHub nace en 2008 como hosting de repositorios git.§  2009: Github 50000 repos y 100000 usuarios.§  2011: Github 2M repos y 1M usuarios
    • ARQUITECTURA
    • Mira la luz… ¡Hay qué desaprender!
    • Hay que tener en cuenta que…§  Git trabaja en local (repositorio local)§  Podemos “empujar” cambios a otros repositorios (repositorios remotos)
    • Hay que tener en cuenta que… Empujamos los cambiosTrabajamos en local
    • SnapshotsOtros VCSAlmacena información como una lista de cambios(deltas)
    • Snapshots Git: Conjunto de snapshotsToma una foto del estado de cada fichero en cadamomento y almacena una referencia a esainstantanea.
    • Snapshots Git: Conjunto de snapshotsSi el fichero no tiene cambios Git no lo almacena otravez.
    • Instalación http://git-scm.com/downloads
    • PROBLEMÁTICA DEL DESARROLLO
    • Trabajo con ramas Tag  v.1.0   Rama estable Rama “en desarrollo” (trunk, master, default)
    • Trabajo con ramas Tag  v.1.0   Rama estableResolución  Bugs   Rama “en desarrollo” (trunk, master, default) Funcionalidades  
    • SERVIDORES CENTRALIZADOS
    • h;p://subversion.apache.org/  
    • SubversionSurge en el 2000 tratando de mejorar algunasdeficiencias de CVS.Su modelo, diseño e interfaz son muy parecidas aCVS.
    • Subversion: Pros§  Muchas de las características de CVS.§  Versionado de directorios, no solo ficheros.§  Copiado y borrado son operaciones de versionado.§  Commit atómicos: “o todo o nada”§  Creación de ramas y tags más rápidos que CVS
    • Subversion: Contras§  Las ramas y etiquetas son copias físicas de los archivos.§  No disponible sin conexión§  Resolución de merge puede ser problemática à trabajo solo sobre el histórico de revisiones
    • Subversion: ContrasEn conclusión, contosa la creación de ramas y resolución de conflictos.
    • CARACTERÍSTICAS DE LOSREPOSITORIOS DISTRIBUIDOS:GIT
    • CaracterísticasTrabajo fácil con ramas locales.Velocidad de manejo de ramas
    • CaracterísticasRapidezCada operación se realiza en el repositorio local.No es necesario conexión con otro servidor.Trabajo offline sin problemas.Rápido
    • CaracterísticasRapidez- Operaciones en local, velocidad constante Git  
    • CaracterísticasDistribuido-  Clonación del repositorio completo-  Múltiples backups-  Diferentes flujos de trabajo.
    • CaracterísticasIntegridad  de datosCada elemento se idenficia por un código hash.Es imposible cambiar el contenido de un fichero odirectorio sin que se entere Git.No podemos perder información o corromper el reposin que se detecte.
    • CaracterísticasIntegridad de datos-  Representación de los ficheros mediante código SHA en función del contenido. Checksum (sha1): 24b9da6552252987aa493b52f8696cd6d3b00373  
    • ZonasZona de staging (Índice)Zona intermedia donde los commits son preparados antes de poder realizarlos.
    • Flujos de trabajoEnfoque centralizado
    • Flujos de trabajoEnfoque distribuido: Flujo manager
    • Flujos de trabajoEnfoque distribuido: Flujo Dictador
    • Gestión de ramas 1) Una rama por cada funcionalidad / tarea (local) Desarrollo   Master   Feature  1  Feature  2   Aceptación?   Tag  0.1   Aceptación?   Producción  
    • Gestión de ramas 2) Una rama por cada funcionalidad / tarea (local) Master   Desarrollo   Feature  2   Feature  1  Fallo   Aceptación  Ok   Aceptación   Producción   Permite entrega continua
    • Gestión de bugs 3) Cada bug se resuelve en una rama independiente Desarrollo   HoRixes   Master   Tag  0.1  Incorporación   del  bug  en   Desarrollo   Tag  0.2   Producción  
    • BeneficiosAlgunos de los beneficios que pueden obtener los equipos de desarrollo son:§  Reducir el time to market.§  Releases más estables.§  Evitar la propagación de bugs.§  Mantener la línea principal de desarrollo limpia.§  Aumenta la versatilidad en la forma de trabajar.
    • Un ejemplo
    • REESCRIBIENDO LA HISTORIA
    • Reescribiendo la historiaPull con rebaseAplicar cambios por encima de otros.Para mantener coherente el repositorio.
    • Reescribiendo la historiaPull con rebase (1) Repositorio Original
    • Reescribiendo la historiaPull con rebase (2) Hacemos cambios en local
    • Reescribiendo la historiaPull con rebase (3a) Pull sin rebase
    • Reescribiendo la historiaPull con rebase (3b) Pull con rebase git pull --rebase <ALIAS-REPO> <BRANCH>
    • Merge con Fast Forward
    • Reescribiendo la historiaSquashingPermite reagrupar commits Reagrupación  de  commits  
    • Reescribiendo la historiaSquashingPermite reagrupar commits$ git rebase –i <primer-commit>$ git rebase –i HEAD^4
    • PROPUESTA DE SOLUCIONES
    • Repositorios en la nubeh;p://github.com   h;p://bitbucket.org  
    • Github.com Plan   Precio     Nº  Repositorios   privados   Large   $50  /month   50   Medium   $22  /month   20   Small   $12/month   10   Micro   $7/month   5   Free   $0/month   0  
    • Bitbucket.org Usuarios   Precio     5   GraXs   10   $10/month   25   $25/month   50   $50/month   100   $100/month   Ilimitados   $200/month    Todos  los  planes  incluyen:   -­‐ Repositorios  privados  ilimitados   -­‐ Revisión  de  código   -­‐ Integración  con  JIRA   -­‐ Soporte   -­‐ Personalización  de  dominios   -­‐   API  Rest  
    • Open Source +  h;p://sitaramc.github.com/gitolite/index.html   h;p://gitlabhq.com/  
    • Gitolite§  Open Source§  Capa de control de acceso sobre Git §  Permisos a repositorios §  Permisos a nivel de branch / tag / directorio / file§  Administración a través de un repositorio Git§  Necesita Git y Perl instalados
    • Gitlab§  Open Source§  Basado en Ruby on Rails y Gitolite§  Manejo visual de permisos§  Revisión de código§  Merge Request§  Integración con LDAP compleja
    • MIGRACIÓN DE SVN A GIT
    • svn2git$ svn2gitMigración de proyectos SVN a Git manteniendotrunk, branches y tagshttps://github.com/nirvdrum/svn2git  
    • git svn$ git svnComando que permite utilizar SVN como repositorioremoto de Git.Para transiciones largas de SVN a Git donde elrepositorio SVN es necesario mantenerlo durante untiempohttp://schacon.github.com/git/git-svn.html  
    • Integración continuaExiste plugin para Jenkins:https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin    
    • Artículo interesanteDon´t use Git:http://svenpet.com/2013/02/21/dont-use-git/        
    • ¿Preguntas? Israel Alcázar Rodríguez israelalcazar@gmail.com @ialcazar