Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SCM ágil – integración continua vs controlada – the raise of DVCS

1,306 views

Published on

Pablo Santos

  • Be the first to comment

  • Be the first to like this

SCM ágil – integración continua vs controlada – the raise of DVCS

  1. 1. Integración continua vs controlada pablo santos luaces @psluaces @plasticscm
  2. 2. Sobre mi• Plastic SCM - founder• Coder• Blog writer… (a ratos) ;) @psluaces
  3. 3. En el show de hoy…• La guerra de la integración• Qué método es más «agile»?
  4. 4. Hay una guerra ahí fuera
  5. 5. Y hay que elegir un bando
  6. 6. Una guerra ahí fuera
  7. 7. Una guerra … de bandos… ;)
  8. 8. De opciones
  9. 9. Las opciones son• Integración continua• Integración controlada
  10. 10. Las opciones son• Integración continua (piedra angular de agile)• Integración controlada
  11. 11. Las opciones son• Integración continua != integración constante (!)• Integración controlada
  12. 12. Pero antes un paso atrás…SCM es importante en «agile»porque:• Collective code ownership• Continuous Integration• Mapeo entre tareas y código• Coordinación del equipo
  13. 13. Qué es «mainline» development?• Trabajar en una única rama…
  14. 14. Qué es «mainline» development?• Trabajar en una única rama…• ¿Es bueno?
  15. 15. Qué es «mainline» development?• Trabajar en una única rama…• ¿Es bueno?• Sí, si no hay otra opción … :P
  16. 16. ¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama… 0
  17. 17. ¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…
  18. 18. ¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…
  19. 19. ¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…
  20. 20. ¿Cómo reconocer «mainline»?• Fácil… sólo hay una rama…
  21. 21. ¿Cómo reconocer «mainline»?• Si tu desarrollo tiene esta pinta… es lineal, mainline, no paralelo!
  22. 22. Esto es desarrollo lineal
  23. 23. Y esto es desarrollo paralelo
  24. 24. Si no hay ramas… no es paralelo
  25. 25. Refuerzo positivo…
  26. 26. La batalla entre diferentes visiones
  27. 27. De dónde viene todo esto?
  28. 28. Ventajas del desarrollo paralelo• Romper la dependencia de tareas
  29. 29. Ventajas del desarrollo paralelo• Romper la dependencia de tareas
  30. 30. Ventajas del desarrollo paralelo• Puntos de partida conocidos – do not shoot a moving target!!!
  31. 31. Ventajas del desarrollo paralelo• Puntos de partida conocidos
  32. 32. Ventajas del desarrollo paralelo• Reforzar la creación de baselines estables
  33. 33. Ventajas del desarrollo paralelo• Código siempre bajo control
  34. 34. Ventajas del desarrollo paralelo• Detener la «bug spreading»
  35. 35. Ventajas del desarrollo paralelo• Detener la «bug spreading»
  36. 36. Ventajas del desarrollo paralelo• Trazabilidad mejorada
  37. 37. Ventajas del desarrollo paralelo• Keep the mainline … pristine
  38. 38. Integración continua – mainline glorificado• The «poorman’s approach»
  39. 39. Refuerzo positivo…
  40. 40. Lo opuesto solía ser «big bang»
  41. 41. Lo opuesto solía ser «big bang»
  42. 42. Y para arreglarlo, integración frecuente
  43. 43. El futuro de CI • How can builds get faster? • How can broken builds be prevented?http://codicesoftware.blogspot.com/2008/03/continuous-integration-future.html
  44. 44. El futuro de CI
  45. 45. El futuro de CI
  46. 46. Feature branches
  47. 47. ¿Qué es una tarea? • ¿Usáis un issue tracker? • Cada entrada en el issue tracker Nota: las tareas son cortas…http://www.plasticscm.com/infocenter/quick-start/intro-task-driven-development.aspx
  48. 48. Integración controladahttp://drdobbs.com/architecture-and-design/205917960
  49. 49. Alternativas de integración• El integrador hace merge• El integrador ejecuta tests• El integrador empaqueta y etiqueta Integration Server For each task to check whether it is valid or not baseline main line baseline task 1120 task 1140 Release Engineer rebased Release Developer Engineer task 1121 task 1129 Developer
  50. 50. Alternativas• Los desarrolladores hacen merge y ejecutan tests• El integrador empaqueta y etiqueta…• Evita mini-big-bangs• Recorta tiempos de compilación Integration Server baseline main line baseline task 1120 Integration is just task 1140 labelling and packing Release and running specific Engineer integration tests rebased Developer task 1121 task 1129 Developer
  51. 51. Alternativas de integración• Desarrolladores hacen merge y ejecutan tests• La línea principal se mantiene limpia baseline main line baseline task 1120 Integration is just task 1140 promoting, labelling and packing and Release running specific Engineer line rebased integration tests Developer e main te to th Promo task 1121 task 1129 Developer integration line Integration Server
  52. 52. En el mundo distribuido – integration manager workflow 1. The project maintainer pushes to their public repository. 2. A contributor clones that repository and makes changes. 3. The contributor pushes to their own public copy. 4. The contributor sends the maintainer an e-mail asking them to pull changes. 5. The maintainer adds the contributor’s repo as a remote and merges locally. 6. The maintainer pushes merged changes to the main repository.
  53. 53. Dictator… 1. Regular developers work on their topic branch and rebase their work on top of master. The master branch is that of the dictator. 2. Lieutenants merge the developers’ topic branches into their master branch. 3. The dictator merges the lieutenants’ master branches into the dictator’s master branch. 4. The dictator pushes their master to the reference repository so the other developers can rebase on it.
  54. 54. Distributed branch per task
  55. 55. Conclusión - Alternativas
  56. 56. Conclusión –Que no te limite tu SCM
  57. 57. pablo santos luaces @psluaces @plasticscm

×