Repositorios de control de versiones Distribuidos: Git

download Repositorios de control de versiones Distribuidos: Git

of 62

  • date post

    26-May-2015
  • Category

    Technology

  • view

    1.071
  • download

    0

Embed Size (px)

description

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

Transcript of Repositorios de control de versiones Distribuidos: Git

  • 1. Repositorios de control de versionesdistribuidos

2. Sobre mi@ialcazarhttp://farmerdev.comFreelance spainjs.org madridjs.org 3. UN POCO DE HISTORIA 4. Introduccin a los VCS1972: Source Code Control System (SCCS): Cdigocerrado, libre con Unix.1982: Revision Control System (RCS) : Multiplataforma.Open Source. Mas funcionalidades y mas rpido. Solo poda trabajar con un fichero a la vez.1986-1990: Concurrent Versions System (CVS): Trabajode mltiples usuarios en el mismo fichero. Open Source. 5. Introduccin a los VCS2000: Apache Subversion. Snapshot de un directorio nosolo de un fichero. Commits transaccionales. Ms rpido.2000: BitKeeper SCM. Cdigo cerrado, propietario. Controlde versiones distribuido. Versin para la comunidad era gratis. Utilizado por elproyecto del kernel de Linux en 2002-2005.Abril 2005: Versin comunidad deja de ser libre. 6. Git Hits Git nace en 2005 GitHub nace en 2008 como hosting derepositorios git. 2009: Github 50000 repos y 100000 usuarios. 2011: Github 2M repos y 1M usuarios 7. ARQUITECTURA 8. Mira la luz Hay qu desaprender! 9. Hay que tener en cuenta que Git trabaja en local (repositorio local) Podemos empujar cambios a otros repositorios(repositorios remotos) 10. Hay que tener en cuenta que Empujamos los cambiosTrabajamos en local 11. SnapshotsOtros VCSAlmacena informacin como una lista de cambios(deltas) 12. Snapshots Git: Conjunto de snapshotsToma una foto del estado de cada fichero en cadamomento y almacena una referencia a esainstantanea. 13. Snapshots Git: Conjunto de snapshotsSi el fichero no tiene cambios Git no lo almacena otravez. 14. Instalacinhttp://git-scm.com/downloads 15. PROBLEMTICA DEL DESARROLLO 16. Trabajo con ramas Tag v.1.0 Rama estableRama en desarrollo (trunk, master, default) 17. Trabajo con ramas Tag v.1.0 Rama estableResolucin Bugs Rama en desarrollo (trunk, master, default)Funcionalidades 18. SERVIDORES CENTRALIZADOS 19. h;p://subversion.apache.org/ 20. SubversionSurge en el 2000 tratando de mejorar algunasdeficiencias de CVS.Su modelo, diseo e interfaz son muy parecidas aCVS. 21. Subversion: Pros Muchas de las caractersticas de CVS. Versionado de directorios, no solo ficheros. Copiado y borrado son operaciones deversionado. Commit atmicos: o todo o nada Creacin de ramas y tags ms rpidos que CVS 22. Subversion: Contras Las ramas y etiquetas son copias fsicas de losarchivos. No disponible sin conexin Resolucin de merge puede ser problemtica trabajo solo sobre el histrico derevisiones 23. Subversion: ContrasEn conclusin, contosa la creacin de ramasy resolucin de conflictos. 24. CARACTERSTICAS DE LOSREPOSITORIOS DISTRIBUIDOS:GIT 25. CaractersticasTrabajo fcil con ramas locales.Velocidad de manejo de ramas 26. CaractersticasRapidezCada operacin se realiza en el repositorio local.No es necesario conexin con otro servidor.Trabajo offline sin problemas.Rpido 27. CaractersticasRapidez- Operaciones en local, velocidad constanteGit 28. CaractersticasDistribuido- Clonacin del repositorio completo- Mltiples backups- Diferentes flujos de trabajo. 29. CaractersticasIntegridad de datosCada elemento se idenficia por un cdigo hash.Es imposible cambiar el contenido de un fichero odirectorio sin que se entere Git.No podemos perder informacin o corromper el reposin que se detecte. 30. CaractersticasIntegridad de datos- Representacin de los ficheros mediante cdigo SHA en funcin del contenido. Checksum (sha1): 24b9da6552252987aa493b52f8696cd6d3b00373 31. ZonasZona de staging (ndice)Zona intermedia donde los commits son preparadosantes de poder realizarlos. 32. Flujos de trabajoEnfoque centralizado 33. Flujos de trabajoEnfoque distribuido: Flujo manager 34. Flujos de trabajoEnfoque distribuido: Flujo Dictador 35. Gestin de ramas1) Una rama por cada funcionalidad / tarea (local) Desarrollo Master Feature 1 Feature 2 Aceptacin? Tag 0.1 Aceptacin? Produccin 36. Gestin de ramas 2) Una rama por cada funcionalidad / tarea (local)Master Desarrollo Feature 2 Feature 1 Fallo Aceptacin Ok Aceptacin Produccin Permite entrega continua 37. Gestin de bugs 3) Cada bug se resuelve en una rama independiente Desarrollo HoRixes Master Tag 0.1 Incorporacin del bug en Desarrollo Tag 0.2 Produccin 38. BeneficiosAlgunos de los beneficios que pueden obtener losequipos de desarrollo son: Reducir el time to market. Releases ms estables. Evitar la propagacin de bugs. Mantener la lnea principal de desarrollolimpia. Aumenta la versatilidad en la forma de trabajar. 39. Un ejemplo 40. REESCRIBIENDO LA HISTORIA 41. Reescribiendo la historiaPull con rebaseAplicar cambios por encima de otros.Para mantener coherente el repositorio. 42. Reescribiendo la historiaPull con rebase (1) Repositorio Original 43. Reescribiendo la historiaPull con rebase (2) Hacemos cambios en local 44. Reescribiendo la historiaPull con rebase (3a) Pull sin rebase 45. Reescribiendo la historiaPull con rebase (3b) Pull con rebase git pull --rebase 46. Merge con Fast Forward 47. Reescribiendo la historiaSquashingPermite reagrupar commitsReagrupacin de commits 48. Reescribiendo la historiaSquashingPermite reagrupar commits$ git rebase i $ git rebase i HEAD^4 49. PROPUESTA DE SOLUCIONES 50. Repositorios en la nubeh;p://github.com h;p://bitbucket.org 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. 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 -Revisin de cdigo -Integracin con JIRA -Soporte -Personalizacin de dominios - API Rest 53. Open Source+ h;p://sitaramc.github.com/gitolite/index.html h;p://gitlabhq.com/ 54. Gitolite Open Source Capa de control de acceso sobre Git Permisos a repositorios Permisos a nivel de branch / tag / directorio / file Administracin a travs de un repositorio Git Necesita Git y Perl instalados 55. Gitlab Open Source Basado en Ruby on Rails y Gitolite Manejo visual de permisos Revisin de cdigo Merge Request Integracin con LDAP compleja 56. MIGRACIN DE SVN A GIT 57. svn2git$ svn2gitMigracin de proyectos SVN a Git manteniendotrunk, branches y tagshttps://github.com/nirvdrum/svn2git 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. Integracin continuaExiste plugin para Jenkins:https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin 60. Artculo interesanteDont use Git:http://svenpet.com/2013/02/21/dont-use-git/ 61. Preguntas? Israel Alczar Rodrguez israelalcazar@gmail.com @ialcazar