0
Repositorios de control de versionesdistribuidos
Sobre mi    @ialcazar    http://farmerdev.comFreelance                           spainjs.org	                             ...
UN POCO DE HISTORIA
Introducción a los VCS1972: Source Code Control System (SCCS): Códigocerrado, libre con Unix.1982: Revision Control System...
Introducción a los VCS2000: Apache Subversion. Snapshot de un directorio nosolo de un fichero. Commits transaccionales. Má...
Git Hits§  Git nace en 2005§  GitHub nace en 2008 como hosting de    repositorios git.§  2009: Github 50000 repos y 100...
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...
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 es...
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...
Trabajo con ramas                 Tag	  v.1.0	                             Rama estableResolución	  Bugs	                 ...
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 a...
Subversion: Pros§  Muchas de las características de CVS.§  Versionado de directorios, no solo ficheros.§  Copiado y bor...
Subversion: Contras§  Las ramas y etiquetas son copias físicas de los    archivos.§  No disponible sin conexión§  Resol...
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...
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 ...
CaracterísticasIntegridad de datos-  Representación de los ficheros mediante código   SHA en función del contenido.       ...
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	...
Gestión de ramas 2) Una rama por cada funcionalidad / tarea (local)                                                      M...
Gestión de bugs 3) Cada bug se resuelve en una rama independiente                         Desarrollo	     HoRixes	     Mas...
BeneficiosAlgunos de los beneficios que pueden obtener los  equipos de desarrollo son:§  Reducir el time to market.§  Re...
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> <BRAN...
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	                                                pri...
Bitbucket.org                                 Usuarios	          Precio	  	                                   5	          ...
Open Source                                              +	  h;p://sitaramc.github.com/gitolite/index.html	       h;p://gi...
Gitolite§  Open Source§  Capa de control de acceso sobre Git   §  Permisos a repositorios   §  Permisos a nivel de bra...
Gitlab§  Open Source§  Basado en Ruby on Rails y Gitolite§  Manejo visual de permisos§  Revisión de código§  Merge Re...
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...
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
Repositorios de control de versiones Distribuidos: Git
Upcoming SlideShare
Loading in...5
×

Repositorios de control de versiones Distribuidos: Git

1,121

Published on

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

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,121
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
58
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "Repositorios de control de versiones Distribuidos: Git"

  1. 1. Repositorios de control de versionesdistribuidos
  2. 2. Sobre mi @ialcazar http://farmerdev.comFreelance spainjs.org   madridjs.org  
  3. 3. UN POCO DE HISTORIA
  4. 4. 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.
  5. 5. 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.
  6. 6. 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
  7. 7. ARQUITECTURA
  8. 8. Mira la luz… ¡Hay qué desaprender!
  9. 9. Hay que tener en cuenta que…§  Git trabaja en local (repositorio local)§  Podemos “empujar” cambios a otros repositorios (repositorios remotos)
  10. 10. Hay que tener en cuenta que… Empujamos los cambiosTrabajamos en local
  11. 11. SnapshotsOtros VCSAlmacena información como una lista de cambios(deltas)
  12. 12. Snapshots Git: Conjunto de snapshotsToma una foto del estado de cada fichero en cadamomento y almacena una referencia a esainstantanea.
  13. 13. Snapshots Git: Conjunto de snapshotsSi el fichero no tiene cambios Git no lo almacena otravez.
  14. 14. Instalación http://git-scm.com/downloads
  15. 15. PROBLEMÁTICA DEL DESARROLLO
  16. 16. Trabajo con ramas Tag  v.1.0   Rama estable Rama “en desarrollo” (trunk, master, default)
  17. 17. Trabajo con ramas Tag  v.1.0   Rama estableResolución  Bugs   Rama “en desarrollo” (trunk, master, default) Funcionalidades  
  18. 18. SERVIDORES CENTRALIZADOS
  19. 19. h;p://subversion.apache.org/  
  20. 20. SubversionSurge en el 2000 tratando de mejorar algunasdeficiencias de CVS.Su modelo, diseño e interfaz son muy parecidas aCVS.
  21. 21. 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
  22. 22. 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
  23. 23. Subversion: ContrasEn conclusión, contosa la creación de ramas y resolución de conflictos.
  24. 24. CARACTERÍSTICAS DE LOSREPOSITORIOS DISTRIBUIDOS:GIT
  25. 25. CaracterísticasTrabajo fácil con ramas locales.Velocidad de manejo de ramas
  26. 26. CaracterísticasRapidezCada operación se realiza en el repositorio local.No es necesario conexión con otro servidor.Trabajo offline sin problemas.Rápido
  27. 27. CaracterísticasRapidez- Operaciones en local, velocidad constante Git  
  28. 28. CaracterísticasDistribuido-  Clonación del repositorio completo-  Múltiples backups-  Diferentes flujos de trabajo.
  29. 29. 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.
  30. 30. CaracterísticasIntegridad de datos-  Representación de los ficheros mediante código SHA en función del contenido. Checksum (sha1): 24b9da6552252987aa493b52f8696cd6d3b00373  
  31. 31. ZonasZona de staging (Índice)Zona intermedia donde los commits son preparados antes de poder realizarlos.
  32. 32. Flujos de trabajoEnfoque centralizado
  33. 33. Flujos de trabajoEnfoque distribuido: Flujo manager
  34. 34. Flujos de trabajoEnfoque distribuido: Flujo Dictador
  35. 35. 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  
  36. 36. 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
  37. 37. 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  
  38. 38. 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.
  39. 39. Un ejemplo
  40. 40. REESCRIBIENDO LA HISTORIA
  41. 41. Reescribiendo la historiaPull con rebaseAplicar cambios por encima de otros.Para mantener coherente el repositorio.
  42. 42. Reescribiendo la historiaPull con rebase (1) Repositorio Original
  43. 43. Reescribiendo la historiaPull con rebase (2) Hacemos cambios en local
  44. 44. Reescribiendo la historiaPull con rebase (3a) Pull sin rebase
  45. 45. Reescribiendo la historiaPull con rebase (3b) Pull con rebase git pull --rebase <ALIAS-REPO> <BRANCH>
  46. 46. Merge con Fast Forward
  47. 47. Reescribiendo la historiaSquashingPermite reagrupar commits Reagrupación  de  commits  
  48. 48. Reescribiendo la historiaSquashingPermite reagrupar commits$ git rebase –i <primer-commit>$ git rebase –i HEAD^4
  49. 49. PROPUESTA DE SOLUCIONES
  50. 50. Repositorios en la nubeh;p://github.com   h;p://bitbucket.org  
  51. 51. 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  
  52. 52. 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  
  53. 53. Open Source +  h;p://sitaramc.github.com/gitolite/index.html   h;p://gitlabhq.com/  
  54. 54. 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
  55. 55. 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
  56. 56. MIGRACIÓN DE SVN A GIT
  57. 57. svn2git$ svn2gitMigración de proyectos SVN a Git manteniendotrunk, branches y tagshttps://github.com/nirvdrum/svn2git  
  58. 58. 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  
  59. 59. Integración continuaExiste plugin para Jenkins:https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin    
  60. 60. Artículo interesanteDon´t use Git:http://svenpet.com/2013/02/21/dont-use-git/        
  61. 61. ¿Preguntas? Israel Alcázar Rodríguez israelalcazar@gmail.com @ialcazar
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×