SlideShare una empresa de Scribd logo
1 de 45
Anuncios
Grupo de usuarios de git
• Nuevo meetup 17 de noviembre ¿algún
voluntario?
• Cambios en la política de reservas
• ¿Alguien quiere dar una charla de gitlab?
Git: flujos de trabajo y
herramientas para trabajo
colaborativo
@aprendegit
@aalbagarcia
Dando el salto
http://www.imdb.com/title/tt0298130/
Cosas a tener en cuenta
(que no son objetivo de la charla)
• Calidad del código
• Documentación
• TDD / BDD / Testing en general
• Metodologías ágiles: SCRUM, XP, etc
• Gestión de proyectos
¿Cómo compartimos
código?
¿Dónde alojamos nuestros
repositorios?
Reglas del juego más
habituales para proyectos
open source
Definiendo unas reglas del
juego
• Sólo el propietario del repositorio puede escribir
(hacer push)
• El resto del mundo tiene que hacer un pull-
request para enviar código
• Con el paso del tiempo, se pueden añadir
usuarios con permiso de escritura que pueden
hacer commits directamente sin pull-request
(se gana agilidad)
Qué es un pull request
Qué es un pull request
etiqueta
• Cada proyecto tiene su forma de aceptar
contribuciones… entérate en cada caso y ¡sigue
las instrucciones!
• Decide en tu proyecto cómo lo vas a hacer
http://www.moonmagazine.info/bond-su-nombre-es-bond-james-bond/
etiqueta
http://www.moonmagazine.info/bond-su-nombre-es-bond-james-bond/
etiqueta
http://www.moonmagazine.info/bond-su-nombre-es-bond-james-bond/
etiqueta
http://www.moonmagazine.info/bond-su-nombre-es-bond-james-bond/
etiqueta:
squashing
http://www.moonmagazine.info/bond-su-nombre-es-bond-james-bond/
Definiendo unas reglas del
juego
• Definir un flujo de trabajo
• Repositorio maestro, todo el mundo tiene
permiso de escritura
• Repositorio maestro con forks
• Mezcla de los dos anteriores
• git-flow: http://aprendegit.com/que-es-git-flow/
Definiendo unas reglas del
juego
https://git-scm.com/book/es/v1/Git-en-entornos-distribuidos-Flujos-de-trabajo-distribuidos
Definiendo unas reglas del
juego
• ¿Ventaja de usar git? Su flexibilidad
Si algo no te funciona lo cambias
Ya
tenemos
reglas del
juego
¿Y ahora
qué?
¿Cómo
hacemos para
que el pull-
request X no se
cargue nada?
¿Cómo hacemos
para que futanito
no se cargue lo
que yo he
hecho?
Comunicación
Testing
Arquitectura y diseño
Integración contínua
Concepto más viejo de lo
que parece (origen en 1991
Grady Booch) Objetivo: eliminar el
“integration hell”
¿Cómo? integrando el
trabajo de todo el mundo lo
antes posible…
…incorporando/mezclando
ramas y ejecutando los
tests
AUTOMÁTICAMENTE
Integración contínuaMuy integrado en github
Interesante lista en la wiki pedia…
¿Cómo conectamos el
repo con el sistema CI?
git hooks
Hooks
• pre-commit: se usa para inspeccionar el snapshot de código, ejecutar tests,
analizadores de código estático…
• Si devuelve !=0 no se sigue el flujo
• prepare-commit-msg: permite editar el mensaje por defecto. Útil para commits
con mensajes automáticos como merge-commits, squashed commits, amends
• argumentos: ruta a fichero con el mensaje, tipo de commit, SHA-1
• commit-msg: Permite validar el mensaje de commit del usuario
• Si devuelve !=0 no se sigue el flujo
• argumentos: ruta a fichero con el mensaje
• post-commit: se suele utilizar para notificar
commit-workflow hooks
pre-commit
#git commit
if $? != 0
prepare-commit-msg
crear mensaje por defecto
Editar el mensaje de
commit
commit-msg
if $? != 0
commit
post-commit
Otros hooks
• pre-rebase: antes de empezar el rebase. Se puede utilizar, por ejemplo para detener
el rebase si se está haciendo rebase de commits que ya han sido empujados
(pushed)
• Si devuelve !=0 no se hace el rebase
• post-checkout: justo después de hacer un checkout. Mover, borrar o descargar
ficheros binarios,auto-generar documentación…
• post-merge: después de que se haya realizado un merge
• pre-push: después de que se reciba la lista de referencias pero antes de que se
reciban los objetos.
• argumentos: nombre y localización del remoto. Lista de ficheros por STDIN
• post-rewrite: se ejecuta por comandos ammend o rebase.
• argumentos: comando. Lista de ficheros por STDIN
Hooks en servidor
• pre-receive: se ejecuta antes de recibir nada por parte del cliente. Se puede usar
para hacer control de accesos, impedir recibir referencias que no sean fast-forward,
etc
• Si devuelve !=0 no se sigue el flujo
• Argumentos: lista de referencias que se quieren enviar
• update: muy parecido. Se ejecuta una vez por cada rama que se está recibiendo
• Argumentos: referencia (rama), el SHA-1 de inicio y el SHA-1 de destino
• Si devuelve !=0 esa rama no se acepta y se sigue con la siguiente
• post-receive: se ejecuta después de que se ha recibido todos los objetos. Se puede
usar para notificiaciones, pasear los mensajes y abrir o cerrar tickets.
• Argumentos: lista de referencias que se han recibido
Hooks
• Referencias:
• https://git-scm.com/book/en/v2/Customizing-
Git-Git-Hooks
• http://githooks.com/
github, bitbicket,
etc,etc,etc…
• En esos servicios no podemos poner scripts a
nivel de servidor…
• …podemos utilizar sus webhooks para
enterarnos de las cosas que pasan
https://developer.github.com/webhooks/
https://confluence.atlassian.com/bitbucket/manag
e-webhooks-735643732.html
¡Ya lo tenemos
(casi) todo!
Otras herramientas
Semantic versioning
• Reglas para poner un número de versión al
software (build, una librería, etc)
• Más información: http://semver.org/
Semantic versioning
• Reglas básicas:
• Versionar el software con una secuencia de tres números X.Y.Z
• X aumenta cuando se rompe la compatibilidad hacia atrás
• Y aumenta cuando se añade funcionalidad que es compatible
hacia atrás
• Z aumenta cuando hay “fixes” que son compatibles
• La versión 0.Y.Z se utiliza para el desarrollo inicial
• La primera versión estable es la 1.0.0
Semantic versioning
• Facilita la gestión de dependencias:
¿Es seguro actualizar el paquete X de la versión
1.1.0 a la 1.2.0?
• Permite tener un conjunto de reglas comunes
para que todo el equipo numere sus librerías
Revisiones de código
Disponen de herramientas
para hacer code review:
• Comentar código
• Comunicación con equipo
• Revisión de los pull-
request
Revisiones de código
• Introducir este tipo de herramientas abre muchas
conversaciones:
• ¿Qué tiene que tener y/o cómo tiene que ser el código para ser
considerado aceptable?
• ¿Qué herramientas vamos a utilizar para facilitarnos que todos
escribamos el código de la misma manera?… mismo
sangrado, misma estructura de ficheros, etc
• ¿Cómo vamos a nombrar las cosas (módulos, paquetes,
funciones, métodos, clases, objetos…)?
• ¿Cómo vamos a documentar el código?
Revisiones de código
¿Qué alternativas tenemos?
gerrit
getbarkeeper.org
yo no tengo nada contra
gerrit pero…
https://www.mediawiki.org/wiki/Git/Gerrit_evaluation
Pensando en el usuario
Checklist
☑︎Seleccionar un SCM
☑︎Seleccionar un servicio para alojar repositorios
☑︎Herramienta de gestión de proyectos: bugs, tareas, scum/kanban, etc, etc, etc
☑︎Definir los flujos de trabajo (ir a la presentación del mes que viene)
☑︎Documentar e implementar los flujos de trabajo
☑︎Herramientas de comunicación: IRC, email, chats…
☑︎Arquitectura / Diseño de tests para trabajo en equipo
☑︎Sistema de integración continua
☑︎Sistema de code review y otras herramientas de calidad (code style tools, etc)
☑︎Integración de repositorio con CI y CD (hooks y webhooks)
☑︎Distribución de librerías, paquetes y/o módulos
☑︎Empezar a trabajar y si algo no funciona ¡Cambiarlo!
¡Gracias!
@aalbagarcia
@aprendegit
Grupo de usuarios de git en meetup
http://www.meetup.com/Spanish-Git-Meetup/

Más contenido relacionado

La actualidad más candente

Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCarlos Huamaní
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada diaAlan Descoins
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4fyomaira
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y GithubJavier Novoa Cataño
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideferosorno
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a GitMario IC
 
Git y drupal
Git y drupalGit y drupal
Git y drupalJuampy NR
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de gitKeopx
 
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesGit y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesParadigma Digital
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPKeopx
 

La actualidad más candente (20)

Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Git / Guía Básica
Git / Guía BásicaGit / Guía Básica
Git / Guía Básica
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
 
Configurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ideConfigurando un repositorio de git hub usando netbeans ide
Configurando un repositorio de git hub usando netbeans ide
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Taller breve de introduccion a Git
Taller breve de introduccion a GitTaller breve de introduccion a Git
Taller breve de introduccion a Git
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Git y drupal
Git y drupalGit y drupal
Git y drupal
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de git
 
Taller GitHub
Taller GitHubTaller GitHub
Taller GitHub
 
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesGit y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
 
Un modelo exitoso para git
Un modelo exitoso para gitUn modelo exitoso para git
Un modelo exitoso para git
 

Similar a Git: flujos de trabajo y herramientas para trabajo colaborativo

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
U1 Control de versiones.pdf
U1 Control de versiones.pdfU1 Control de versiones.pdf
U1 Control de versiones.pdfEric Quiñones
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDaniel Cruz
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendLeonidas Esteban González
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosEmmanuel Fortuna
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitDrPantera
 
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...Antonio Ognio
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012Asier Marqués
 
¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?Gerónimo Di Pierro
 
Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Alonso Caballero
 
GitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptxGitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptxicebeam7
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptxDyllanBastidas
 

Similar a Git: flujos de trabajo y herramientas para trabajo colaborativo (20)

"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
U1 Control de versiones.pdf
U1 Control de versiones.pdfU1 Control de versiones.pdf
U1 Control de versiones.pdf
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Flujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontendFlujos de trabajo para un desarrollador web frontend
Flujos de trabajo para un desarrollador web frontend
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Social Erlang
Social ErlangSocial Erlang
Social Erlang
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas Operativos
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y git
 
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
 
C++ Meetup Madrid
C++ Meetup MadridC++ Meetup Madrid
C++ Meetup Madrid
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012
 
Tema 1 Control de Versiones
Tema 1 Control de VersionesTema 1 Control de Versiones
Tema 1 Control de Versiones
 
¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?¿Cómo elegir tu workflow de Git?
¿Cómo elegir tu workflow de Git?
 
Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"
 
GitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptxGitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptx
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
 
Python
PythonPython
Python
 

Último

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 

Último (20)

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 

Git: flujos de trabajo y herramientas para trabajo colaborativo

  • 1.
  • 2. Anuncios Grupo de usuarios de git • Nuevo meetup 17 de noviembre ¿algún voluntario? • Cambios en la política de reservas • ¿Alguien quiere dar una charla de gitlab?
  • 3. Git: flujos de trabajo y herramientas para trabajo colaborativo @aprendegit @aalbagarcia
  • 6. Cosas a tener en cuenta (que no son objetivo de la charla) • Calidad del código • Documentación • TDD / BDD / Testing en general • Metodologías ágiles: SCRUM, XP, etc • Gestión de proyectos
  • 9. Reglas del juego más habituales para proyectos open source
  • 10. Definiendo unas reglas del juego • Sólo el propietario del repositorio puede escribir (hacer push) • El resto del mundo tiene que hacer un pull- request para enviar código • Con el paso del tiempo, se pueden añadir usuarios con permiso de escritura que pueden hacer commits directamente sin pull-request (se gana agilidad)
  • 11. Qué es un pull request
  • 12. Qué es un pull request
  • 13. etiqueta • Cada proyecto tiene su forma de aceptar contribuciones… entérate en cada caso y ¡sigue las instrucciones! • Decide en tu proyecto cómo lo vas a hacer http://www.moonmagazine.info/bond-su-nombre-es-bond-james-bond/
  • 18. Definiendo unas reglas del juego • Definir un flujo de trabajo • Repositorio maestro, todo el mundo tiene permiso de escritura • Repositorio maestro con forks • Mezcla de los dos anteriores • git-flow: http://aprendegit.com/que-es-git-flow/
  • 19. Definiendo unas reglas del juego https://git-scm.com/book/es/v1/Git-en-entornos-distribuidos-Flujos-de-trabajo-distribuidos
  • 20. Definiendo unas reglas del juego • ¿Ventaja de usar git? Su flexibilidad Si algo no te funciona lo cambias
  • 22. ¿Cómo hacemos para que el pull- request X no se cargue nada? ¿Cómo hacemos para que futanito no se cargue lo que yo he hecho?
  • 24. Integración contínua Concepto más viejo de lo que parece (origen en 1991 Grady Booch) Objetivo: eliminar el “integration hell” ¿Cómo? integrando el trabajo de todo el mundo lo antes posible… …incorporando/mezclando ramas y ejecutando los tests AUTOMÁTICAMENTE
  • 25. Integración contínuaMuy integrado en github Interesante lista en la wiki pedia…
  • 26. ¿Cómo conectamos el repo con el sistema CI?
  • 28. Hooks • pre-commit: se usa para inspeccionar el snapshot de código, ejecutar tests, analizadores de código estático… • Si devuelve !=0 no se sigue el flujo • prepare-commit-msg: permite editar el mensaje por defecto. Útil para commits con mensajes automáticos como merge-commits, squashed commits, amends • argumentos: ruta a fichero con el mensaje, tipo de commit, SHA-1 • commit-msg: Permite validar el mensaje de commit del usuario • Si devuelve !=0 no se sigue el flujo • argumentos: ruta a fichero con el mensaje • post-commit: se suele utilizar para notificar
  • 29. commit-workflow hooks pre-commit #git commit if $? != 0 prepare-commit-msg crear mensaje por defecto Editar el mensaje de commit commit-msg if $? != 0 commit post-commit
  • 30. Otros hooks • pre-rebase: antes de empezar el rebase. Se puede utilizar, por ejemplo para detener el rebase si se está haciendo rebase de commits que ya han sido empujados (pushed) • Si devuelve !=0 no se hace el rebase • post-checkout: justo después de hacer un checkout. Mover, borrar o descargar ficheros binarios,auto-generar documentación… • post-merge: después de que se haya realizado un merge • pre-push: después de que se reciba la lista de referencias pero antes de que se reciban los objetos. • argumentos: nombre y localización del remoto. Lista de ficheros por STDIN • post-rewrite: se ejecuta por comandos ammend o rebase. • argumentos: comando. Lista de ficheros por STDIN
  • 31. Hooks en servidor • pre-receive: se ejecuta antes de recibir nada por parte del cliente. Se puede usar para hacer control de accesos, impedir recibir referencias que no sean fast-forward, etc • Si devuelve !=0 no se sigue el flujo • Argumentos: lista de referencias que se quieren enviar • update: muy parecido. Se ejecuta una vez por cada rama que se está recibiendo • Argumentos: referencia (rama), el SHA-1 de inicio y el SHA-1 de destino • Si devuelve !=0 esa rama no se acepta y se sigue con la siguiente • post-receive: se ejecuta después de que se ha recibido todos los objetos. Se puede usar para notificiaciones, pasear los mensajes y abrir o cerrar tickets. • Argumentos: lista de referencias que se han recibido
  • 33. github, bitbicket, etc,etc,etc… • En esos servicios no podemos poner scripts a nivel de servidor… • …podemos utilizar sus webhooks para enterarnos de las cosas que pasan https://developer.github.com/webhooks/ https://confluence.atlassian.com/bitbucket/manag e-webhooks-735643732.html
  • 36. Semantic versioning • Reglas para poner un número de versión al software (build, una librería, etc) • Más información: http://semver.org/
  • 37. Semantic versioning • Reglas básicas: • Versionar el software con una secuencia de tres números X.Y.Z • X aumenta cuando se rompe la compatibilidad hacia atrás • Y aumenta cuando se añade funcionalidad que es compatible hacia atrás • Z aumenta cuando hay “fixes” que son compatibles • La versión 0.Y.Z se utiliza para el desarrollo inicial • La primera versión estable es la 1.0.0
  • 38. Semantic versioning • Facilita la gestión de dependencias: ¿Es seguro actualizar el paquete X de la versión 1.1.0 a la 1.2.0? • Permite tener un conjunto de reglas comunes para que todo el equipo numere sus librerías
  • 39. Revisiones de código Disponen de herramientas para hacer code review: • Comentar código • Comunicación con equipo • Revisión de los pull- request
  • 40. Revisiones de código • Introducir este tipo de herramientas abre muchas conversaciones: • ¿Qué tiene que tener y/o cómo tiene que ser el código para ser considerado aceptable? • ¿Qué herramientas vamos a utilizar para facilitarnos que todos escribamos el código de la misma manera?… mismo sangrado, misma estructura de ficheros, etc • ¿Cómo vamos a nombrar las cosas (módulos, paquetes, funciones, métodos, clases, objetos…)? • ¿Cómo vamos a documentar el código?
  • 41. Revisiones de código ¿Qué alternativas tenemos? gerrit getbarkeeper.org
  • 42. yo no tengo nada contra gerrit pero… https://www.mediawiki.org/wiki/Git/Gerrit_evaluation
  • 43. Pensando en el usuario
  • 44. Checklist ☑︎Seleccionar un SCM ☑︎Seleccionar un servicio para alojar repositorios ☑︎Herramienta de gestión de proyectos: bugs, tareas, scum/kanban, etc, etc, etc ☑︎Definir los flujos de trabajo (ir a la presentación del mes que viene) ☑︎Documentar e implementar los flujos de trabajo ☑︎Herramientas de comunicación: IRC, email, chats… ☑︎Arquitectura / Diseño de tests para trabajo en equipo ☑︎Sistema de integración continua ☑︎Sistema de code review y otras herramientas de calidad (code style tools, etc) ☑︎Integración de repositorio con CI y CD (hooks y webhooks) ☑︎Distribución de librerías, paquetes y/o módulos ☑︎Empezar a trabajar y si algo no funciona ¡Cambiarlo!
  • 45. ¡Gracias! @aalbagarcia @aprendegit Grupo de usuarios de git en meetup http://www.meetup.com/Spanish-Git-Meetup/

Notas del editor

  1. Paralelismo entre participar en un proyecto de software libre y trabajar en un equipo
  2. Ejemplo en negro: queremos compartir nuestra librería. Ejemplo en blanco: el equipo crece (somos una startup por ejemplo, de momento lo he hecho todo yo y el equipo empieza a crecer)
  3. Las dos cosas dan un poco de acojone. Para la historia en negro: no publico porque mi código es una mierda Para historia en blanco: pagar nóminas da acojone
  4. La primera pregunta que nos tenemos que hacer es ¿Qué herramienta queremos utilizar para compartir nuestro código? En negro: para código open-source: seguramente git es una buena opción, aunque mercurial y SVN también son alternativas En blanco: hay que hacerse algunas preguntas ¿en qué estamos desarrollando?¿qué tipo de proyecto vamos a desarrollar? ¿necesitamos muchos assets?
  5. La primera pregunta que nos tenemos que hacer es ¿Qué herramienta queremos utilizar para compartir nuestro código? En negro: para código open-source: seguramente github es una buena opción. En blanco: hay que hacerse algunas preguntas ¿en qué estamos desarrollando?¿podemos sacar el código de nuestra infraestructura? ¿vamos a compartir el código con nuestros clientes?
  6. Las reglas del juego más aceptadas cuando se trabaja con git en un proyecto de software libre
  7. En algunos proyectos, se pide que hagas un squash de varios commits y envíes un sólo commit. Esto se hace para eliminar ruido del repositorio especialmente en aquellos con muchas contribuciones y colaboradores.
  8. Comentar un poco los flujos de trabajo que se pueden usar y la importancia de definirlos.
  9. Sacado de pro-git. capítulo 5
  10. Comentar un poco los flujos de trabajo que se pueden usar y la importancia de definirlos.
  11. Lo normal es que: Proyecto open source: alguien nos envíe mejoras, correcciones de bug, etc. Equipo de trabajo: Tenemos que empezar a trabajar juntos. Eso nos va a añadir nuevas cosas a tener en cuenta. Preguntar ¿qué cosas se os ocurren?
  12. Esta es una de las primeras decisiones que tenemos que tomar. Qué herramientas vamos a utilizar para responder a esta pregunta.
  13. Estas son algunas de las herramientas que podemos utilizar para resolver este problema. La primera posiblemente es la más importante. En open source se soluciona con listas de correo, issues de github, etc. En tu proyecto, a lo mejor una solución mucho más mundana y sencilla como por ejemplo ‘hablar con el compañero’, es suficiente. No voy a entrar en la discusión de los tests. Aportan muchas cosas, entre ellas facilitar el que más de una persona pueda tocar el mismo código. También hay decisiones de diseño y arquitectura de la aplicación que facilitan esta tarea. Por ejemplo, a niveles de aplicaciones grandes, el desarrollo en microservicios (no quiero polémicas). A niveles más mundanos, el desarrollo en componentes. Por ejemplo, desarrollo de symfony1 monolítico con respecto a symfony2 basado en bundles. RAILS desarrolla todo basado en gemas. Permite equipos independientes, desarrollos en paralelo, etc. Todas estas soluciones no son excluyentes, son complementarias. Todas tienen su coste…
  14. Bien, hemos decidido que vamos a hacer tests automatizados. ¿Cómo los hacemos? https://en.wikipedia.org/wiki/Continuous_integration Continuous integration (CI) is the practice, in software engineering, of merging all developer working copies to a shared mainline several times a day. It was first named and proposed by Grady Booch in his 1991 method,[1] although Booch did not advocate integrating several times a day. It was adopted as part of extreme programming (XP), which did advocate integrating more than once per day, perhaps as many as tens of times per day. The main aim of CI is to prevent integration problems, referred to as "integration hell" in early descriptions of XP. CI isn't universally accepted as an improvement over frequent integration, so it is important to distinguish between the two as there is disagreement about the virtues of each.[citation needed] In XP, CI was intended to be used in combination with automated unit tests written through the practices of test-driven development. Initially this was conceived of as running all unit tests in the developer's local environment and verifying they all passed before committing to the mainline. This helps avoid one developer's work-in-progress breaking another developer's copy. If necessary, partially complete features can be disabled before committing using feature toggles. Later elaborations of the concept introduced build servers, which automatically ran the unit tests periodically or even after every commit and report the results to the developers. The use of build servers (not necessarily running unit tests) had already been practised by some teams outside the XP community. Nowadays, many organisations have adopted CI without adopting all of XP. In addition to automated unit tests, organisations using CI typically use a build server to implement continuous processes of applying quality control in general — small pieces of effort, applied frequently. In addition to running the unit and integration tests, such processes run additional static and dynamic tests, measure and profile performance, extract and format documentation from the source code and facilitate manual QA processes. This continuous application of quality control aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development. This is very similar to the original idea of integrating more frequently to make integration easier, only applied to QA processes. In the same vein, the practice of continuous delivery further extends CI by making sure the software checked in on the mainline is always in a state that can be deployed to users and makes the actual deployment process very rapid.
  15. Bien, hemos decidido que vamos a hacer tests automatizados. ¿Cómo los hacemos?
  16. Ok, esto es lo mínimo que necesitamos para empezar a trabajar…¿qué más podemos hacer?
  17. Si estás trabajando en un proyecto de software libre, posiblemente esto sea lo que utilices
  18. Esto no es es sólo poner la herramienta y ya está. Tened en cuenta que siempre que añades una herramienta debe ser para algo y debe aportar algo.
  19. Alternativas a gerrit
  20. Esto no es es sólo poner la herramienta y ya está. Tened en cuenta que siempre que añades una herramienta debe ser para algo y debe aportar algo.