Git en el mundo real . 17/nov/2015
En el grupo de usuarios de Git se ha hablado mucho del uso de Git y pocas veces de cómo se ha implantado en diferentes empresas; en esta charla, ha llegado el momento de estudiar tres casos distintos.
En esta presentación contamos cómo hemos evolucionado en Acilia en nuestro uso de esta plataforma:
- evolución,
- adquisición de comprimisos: git-hooks,
- caso de uso: sincronización de la BDD con Git
Ponentes: Ángel Roldán y David Pordomingo.
Enlace a la descripción de la charla:
http://www.meetup.com/es/Spanish-Git-Meetup/events/226300816
1. Git en el mundo real
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
2. Ángel Roldán David Pordomingo
@senechaux @rizomeEs
¿ Quiénes sómos ?
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
y venimos de...
3. ¿Qué hacemos en Acilia?
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
4. ¿Qué hacemos en Acilia?
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
5. ¿ y qué os vamos a contar?
Nuestra evolución
Cómo hacemos que se cumplan las normas
Cómo nos complicamos la vida, y cómo nos la solucionamos
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
6. Evolución. Prehistoria (3 años, 3 personas)
Entorno de validación similar al de producción
Ramas: todo el trabajo se realiza sobre <master>
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
7. Evolución. El equipo crece (2’5 años, 4 personas)
Entorno de validación con rama fija: preprod
Entorno de pruebas independiente con rama variable
Ramas: sólo si se prevé un desarrollo largo
- para todo lo demás: <master>
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
8. Evolución. La cantidad de issues crece (1 año, 6-8 personas)
Entorno de validación con rama fija: preprod
Entorno de pruebas independiente con rama variable
Ramas: se recomienda una por cada issue
Commits: sin reglas; pueden desarrollarse fixes o tareas pequeñas sobre master.
- nombres: sin política (wip, wip2, definitivo, ahorasi)
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
9. Evolución. Commits everywhere… (6 meses, 8 personas)
Entorno de validación con rama fija: preprod
Entorno de pruebas independiente con rama variable
Ramas: una para cada issue
- nombres: prefijo ISSUE-XXX
Commits: siempre en rama dedicada a la tarea
- nombres: sin política
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
10. Evolución. Control del desarrollador (2 meses, 8-10 personas)
Entorno de validación con rama fija: preprod
Entorno de pruebas independiente con rama variable
Ramas: una para cada issue
- nombres: prefijo ISSUE-XXX
Commits: siempre en rama dedicada a la tarea
- nombres: sin política
Fork por cada persona
Pull-request a través de GitHub
- aprobación automática por el desarrollador
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
11. Evolución. Poniendo el foco en la calidad (1 mes, 8-10 personas)
Entorno de validación con rama fija: preprod
Entorno de pruebas independiente con rama variable
Ramas: una para cada issue
- nombres: prefijos ISSUE-XXX, FEATURE/, CLEANUP/, COSMETICS/, FIX/, HOTFIX/, HOTFIX/ISSUE-XXX
Commits: siempre en rama dedicada a la tarea
- nombres: precedido por el nombre de la rama
Fork por cada persona
Pull-request a través de GitHub
- code-review dependiente de la criticidad
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
12. Evolución. Poniendoselo fácil al desarrollador (10 personas)
Múltiples entornos de validación, uno por cada rama a validar
Entorno de pruebas independiente con rama variable
Ramas: una para cada issue
Commits: siempre en rama dedicada a la tarea
Cumplimiento de estándares asegurado mediante hooks
Fork por cada persona
Pull-request a través de GitHub
- lanzados desde la consola
- ¿gitflow?
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
13. Evolución. Estadios pasados.
3 👥
3 años
4 👥
2,5 años
6-8 👥
1 año
8 👥
6 meses
8-10 👥
2 meses
8-10 👥
1 mes
entornos prod
pre
prod
pre
prod = pre
staging
prod = pre
staging
prod = pre
staging
prod = pre
staging
ramas master sólo para
desarrollos
recomend.
por issue
obligatorio
por issue
obligatorio
por issue
obligatorio
por issue
commits rama propia rama propia rama propia
naming ISSUE-XXX ISSUE-XXX prefijos
forks personales personales
PR auto
aprobados
code review
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
14. la cosa avanza, vamos por el ecuador
Nuestra evolución
Cómo hacemos que se cumplan las normas
Cómo nos complicamos la vida, y cómo nos la solucionamos
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
15. Cumpliendo normas. ¿Qué normas?
Compromiso con la calidad.
Compromiso con la agilidad.
Elección de estándard.
Haciendo que se cumplan las normas
Recomendación: rebase antes de PR y squashing
Git-Hooks
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
16. Cumpliendo normas. Nombres de commits bonicos
<prepare-commit-msg> Tomando el nombre de la rama
<commit-msg> Validando que el mensaje del commit sigue las normas
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
17. Cumpliendo normas. Code standards
<pre-commit> Asegurando que el código cumple con nuestros estándares
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
18. Cumpliendo normas. Cada commit en su sitio
<pre-commit> Asegurando que no se sale ningún commit de su issue
<pre-push> Asegurando que nadie intenta pushear sobre ramas públicas
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
19. cinco minutos y estos dos se retiran
Nuestra evolución
Cómo hacemos que se cumplan las normas
Cómo nos complicamos la vida, y cómo nos la solucionamos
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
20. CMS, git y BDD. Editores vs desarrolladores
Desincronización entre los templates de la BDD -que manipulan
los editores-, y los mismos templates que editamos desde
nuestro IDE.
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
21. CMS, git y BDD. Mandando mails desde el CMS
Primer acercamiento: mandar un email cuando se edita un
template desde el CMS
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
22. CMS, git y BDD. Commiteando desde el CMS
Segundo acercamiento: comiteando desde el CMS
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
23. CMS, git y BDD. Pull-request desde el CMS ¿orly?
Segunda vuelta: actualizando la BDD con los datos del
repositorio.
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain
24. bibliografía
http://git-scm.com/book/en/v2
(para rellenar: en castellano) http://librosweb.es/libro/pro_git
https://github.com/brigade/overcommit
y evidentemente:
http://stackoverflow.com/questions/tagged/git
Angel Roldán @senechaux · David Pordomingo @rizomeEs C/Campomanes 6, 5ºizq; 28013 Madrid Spain