@GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow...

Post on 31-Dec-2020

20 views 0 download

Transcript of @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow...

@GlobalLogic_LA

Branching Model

@GlobalLogic_LA

@GlobalLogic_LA

MotivosConceptosWorkflowCentralized WorkflowBranching WorkflowForking WorkflowMerging Requests--Practica

01020304050607 --0a

Temario

@GlobalLogic_LA

Motivos

@GlobalLogic_LA

Motivos

➢ Trabajo en equipo: Permitir trabajo distribuido en equipos potencialmente grandes.

➢ Disponibilidad de versiones: Capacidad de navegar el historial de cambios y recuperar cualquier versión.

➢ Historial de cambios: Trazabilidad, correlación y registro de cambios.

➢ Conexión con herramientas: Interoperabilidad con herramientas de gestión, calidad y métricas.

@GlobalLogic_LA

Conceptos

● Branch: línea de trabajo separada. incluye datos consistentes al motivo de la branch. cada cambio se agrupa en un commit cohesivo, que avanza el crecimiento del esquema de árbol.

@GlobalLogic_LA

Conceptos

● Tracking Branch: branch que sigue los cambios de otra branch. funciona como proxy permitiendo probar cambios sin impactar la branch original, o acceder a datos offline de manera local.

❖ Local Branching: Los datos pueden ser versionados, brancheados, mergeados, taggeados y manipulados localmente, ofreciendo enormes ventajas al desarrollo.

❖ Workflows: soportar múltiples workflows adecuándose al estilo de trabajo y metodologías del equipo de desarrollo.

❖ GITHUB: Github revolucionó el desarrollo y es el nuevo estandard con casi 5M repos y 3M users.

@GlobalLogic_LA

Conceptos

@GlobalLogic_LA

Workflow

@GlobalLogic_LA

WorkflowBranching se considera la piedra fundamental del desarrollo y junto con el merging son parte de la rutina diaria.

El workflow mantiene el avance de las features, bugs, hotfixes, releases, mientras se mantiene un entorno limpio y coherente tanto para los desarrolladores como para las herramientas, tales como CI, Unit Test, Static Analysis.

@GlobalLogic_LA

Branching Model Original

Branching model introducido por Vincent Driessen en el 2010.

- Objetivo es el trabajo distribuido.- Versiones en releases- Mantiene el historial mediante

mergeos sin fast-forward.

@GlobalLogic_LA

Centralized Workflow

@GlobalLogic_LA

Branching Workflow

@GlobalLogic_LA

GitFlow Branching Workflow

@GlobalLogic_LA

Forking Workflow

@GlobalLogic_LA

Branch Workflow1. Pull from origin para actualizar la replica local

2. Branch a branch para generar la branch

3. Commit on branch trabajar sobre la branch, mantener

cohesión en los commits y un comentario útil.

4. Rebase frequently mantener actualizada la branch

5. Merge request al terminar

@GlobalLogic_LA

Branch Workflow5. Merge request

@GlobalLogic_LA

Merge Request Workflow

@GlobalLogic_LA

Workflow KPI

1. Short-lived branches

2. Minimize and simplify reverts

3. Match a release schedule

4. Workflow must be simple and enhance productivity

5. Allow for tools and human checkpoints

@GlobalLogic_LA

Protected Branch

Evita que los datos sean destruidos por descuido.Solo aceptan cambios de los owners del repositorio.Se pueden enviar commits por medio de merge requests.

@GlobalLogic_LA

¿ Preguntas ?

ReferenciasGit: https://git-scm.com/Workflow: http://nvie.com/posts/a-successful-git-branching-model/Git Workflow: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflowGitFlow: http://nvie.com/posts/a-successful-git-branching-model/Git-Flow: https://github.com/petervanderdoes/gitflow-avhForking Workflow: https://www.atlassian.com/git/tutorials/comparing-workflows#forking-workflow

PracticaThe more you practice, the master you get

@GlobalLogic_LA

@GlobalLogic_LA

Workflow de gitSu repositorio local consta de tres "árboles" mantenidos por git. el primero es su Directorio de trabajo (Working Dir) que contiene los archivos reales. El segundo es el índice (index) que actúa como un área de preparación y, finalmente, el HEAD que señala el último commit que ha realizado.

@GlobalLogic_LA

Crea un repositorioecho "# GIT_it_done" >> README.mdgit init

Add & Commitgit add README.mdgit commit -m "first commit"

Envío de cambiosgit remote add origin https://github.com/JonatanRaverta/GIT_it_done.gitgit push -u origin master

@GlobalLogic_LA

Desafío

● Crea un cuenta en github● Crea un repositorio que se llame práctica● Subi un archivo que se llame README.md que contenga el nombre del

curso ● No olvides poner un buen comentario en tu commit, los mas originales

recibirán premios

@GlobalLogic_LA

Checkout de un repositorio

echo "# GIT_it_done" >> README.mdgit clone https://github.com/JonatanRaverta/GIT_it_done.git

@GlobalLogic_LA

BranchingLas ramas son utilizadas para desarrollar funcionalidades aisladas unas de otras. La rama master es la rama "por defecto" cuando creas un repositorio.

Crear una rama● git checkout -b feature_x

Vuelve a la rama principal● git checkout master

y borra la rama● git branch -d feature_x

@GlobalLogic_LA

Update & mergePara actualizar tu repositorio local al commit más nuevo● git pull

Para fusionar “merge” otra rama a tu rama activa (por ejemplo master)● git merge <branch>

en ambos casos git intentará fusionar automáticamente los cambios Y si no funciona? ● git add <filename>

Antes de hacer merge, puedes revisarlos ● git diff <source_branch> <target_branch>

@GlobalLogic_LA

Reemplaza cambios localesEl extraño caso de hacer algo malReemplazar cambios locales● git checkout -- <filename>

Y… si todo sale mal

deshacer todos los cambios locales y commits● git fetch origin● git reset --hard origin/master

¿Preguntas?

@GlobalLogic_LA

Ver streaming