Introducción a GitFlow, primeros pasos.

Primero pasos con git flow

 264 total views,  1 views today

Introducción.

Es muy probable que en nuestra vida como desarrolladores de software hayamos tenido que implementar un sistema para gestionar el antes y el después de nuestro proyectos. Con los sistemas de control de versiones nos evitamos la pérdida de tiempo y recursos en implementar un sistema que nos ayude en el tiempo con el desarrollo de aplicaciones. En este artículo veremos una introducción a GitFlow, y daremos nuestros primeros paso en un sistema de control de versiones.

¿Qué es un sistema de control de versiones?

Un sistema de control de versiones es una herramienta que nos ayuda a gestionar en el tiempo los cambios que se realizan en un archivo o conjunto de archivos de un proyecto de software, de modo que podamos recuperar un cambio específico.

Existen muchos sistema de control de versiones. Entre los más utilizados tenemos CVS, Subversion, Mercurial, Git y Bazaar. Para este artículo veremos Git en las exensiones de GitFlow.

¿Qué es Git?

Es un software de control de versiones, que proporciona herramientas para llevar registro de los cambios en archivos de un computador y coordina el trabajo que varias personas realizan sobre archivos compartidos. Diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del control de versiones, de proyectos de desarrollo de software, cuando éstos tienen muchos archivos de código fuente. ¿Quieres saber más?

¿Qué es GitFlow?

Vincent Driessen  presentó en su blog un modelo. Es un modelo de flujo de trabajo ramificado, que asigna roles a un conjunto de ramas y define cómo deben interactuar entre ellas. Actualmente este modelo se presenta en un conjunto liviano de herramientas para el control de versiones con Git, que proveen comandos para gestionar ramas, el cual se denomina Git Flow.

Modelo GitFlow
Modelo Git Flow

¿Cómo instalar GitFlow?

Ahora veremos como instalar GitFlow en los sistema operativo Linux, Mac y Windows.

Sistemas Linux.

En sistemas Linux podemos instalar GitFlow desde la terminal con la siguiente sentencia:

Debian

sudo apt install git-flow

Fedora

sudo dnf install gitflow

Sistema Mac OS X.

Al igual que en sistemas Linux, instalar git flow en Mac OS X es muy fácil. Digitamos una terminal la siguiente sentencia:

 brew install git-flow

O

port install git-flow

 

Sistema Windows

En sistema windows podemos instalar Git Flow, instalando Git para Windows, ya que viene incluido por defecto en el instalador de Git de Windows.

Entendiendo el Modelo de Git Flow.

Como ya sabemos, Git Flow es un modelo de control de flujo ramificado. Su control es basado en ramas, teniendo dos ramas principales y tres ramas auxiliares, de las cuales hablaremos a continuación.

Ramas Principales

El modelo de Git Flow está basado en dos ramas principales infinitas en el tiempo. En estas ramas no se podrá hacer modificaciones directas, recibiendo los cambios solo de sus ramas auxiliares. Las ramas principales son:

  • Master -> Rama principal de producción.
  • Develop -> Rama principal de desarrollo.

Ramas Auxiliares

En el modelo de Git Flow existen tres ramas auxiliares, las cuales se encargan de agregar los cambios a las ramas principales.  Estas son las ramas auxiliares:

  • Feature -> se utiliza para agregar nuevas características al proyecto en desarrollo.
  • Release -> se utiliza para agregar nuevas versiones a producción.
  • Hotfix -> se utiliza para corregir fallas menores que se detectaron en producción.

Todas las etiquetas de las ramas principal y auxiliares pueden ser modificas. Se recomienda utilizar las predeterminadas de Git Flow (master, develop, feature, release y hotfix). Como ejemplo, podríamos utilizar la rama master con la etiqueta producción. Estas etiquetas se pueden modificar al momento que inicia el control de versión con git flow.

Agregando cambios a las ramas Principales

Como ya mencionamos, las ramas principales solo reciben cambios de sus ramas auxiliares, donde master recibe cambios de las ramas release y hotfix. De manera similar, la rama develop recibe los cambios de las ramas feature, release y hotfix.

Para ver cómo se agregan los cambios, utilizaremos como ejemplo el proyecto creado en Persistencia con Sqlite implementando JDBC.

 

Iniciamos el Control de Versión.

Iniciamos el proyecto con Maven. Creamos las carpetas controller, view y model y después cambiamos el contenido del pom.xml. Luego iniciamos el control de versión con git flow con la siguiente sentencia desde una terminal:

git flow init

git flow init

git flow init

Para entender un poco mejor, se cambiaron las etiqueta de master por producción y develop por desarrollo. Sin embargo, se recomienda utilizar las predeterminada por el modelo de GitFlow.

Una vez que iniciamos el control de versiones, git flow habrá trasladado a  la rama de desarrollo como se muestra en la imagen anterior y además habrá creado nuestro primer commit.

Initial commit

Creando las Ramas Feature.

git flow feature
Feature

Como podemos ver en la imagen Feature, esta rama parte de la rama desarrollo (develop) y una vez finalizado, retorna a la rama desarrollo (develop).

Siguiendo con el ejemplo tomando el proyecto de Persistencia con Sqlite implementando JDBC. vamos a crear una feature con el nombre de “connection” con la siguiente sentencia:

git flow feature start connection

Se crea la clase ConnectionBD y se crea el directorio ../var/db, agregamos los cambios al repositorio con los siguientes comando de git

git add .
git commit -m "Se agrega conexion a la base de datos"

Ya agregado el cambio en la rama connection enviaremos el cambio a la rama principal de feature con la siguiente sentencia:

git flow feature finish connection

Git flow feature Una vez que los cambios estén en desarrollo, seguimos los mismos pasos para las demás características que se le agregan al proyecto. Por ejemplo:

git flow feature log

Creando rama Release.

git flow release
Release

La rama Release parte de la rama desarrollo (develop) y traslada los cambios a la rama producción (master)  como una nueva versión del proyecto y a la rama desarrollo (develop) con posibles correcciones detectadas antes de agregar la nueva versión a producción.

Para enviar los cambios de la nueva version a producción (master) lo haremos con los siguientes comando:

Primeramente agregamos la rama auxiliar release:

git flow release start V1.0

Si tenemos fallas detectadas en esta rama, hacemos los commits necesarios, y después enviamos los cambios a producción (master) con el comando:

git flow release finish V1.0

Reparando fallas de producción.

git flow hotfix
Hotfix

La rama auxiliar hotfix se utiliza para corregir fallas que se encontraron en producción (master), los cuales haremos con las siguientes sentencias:

Primeramente creamos la rama auxiliar :

git flow hotfix start V1.1

Una vez creada la rama, agregamos las correcciones necesarias y las hacemos efectivas con commit. Después trasladamos los cambios a producción y a desarrollo con la siguiente sentencia:

git flow hotfix finish V1.1

Hasta aquí hemos hecho un ciclo del modelo de git flow enviando las modificaciones de las ramas auxiliares a las ramas principales.

Ventajas y desventajas de utilizar Git Flow.

Ventajas

  • Asegura claridad en el ciclo de vida de cada rama.
  • Las ramas siguen un patrón semántico.
  • Puedes desarrollar en paralelo.

Desventajas

  • Puede hacer que la historia se vuelva ilegible.
  • Algunas ramas se consideran redundantes.
  • Dificulta la entrega continua.

 

Please follow and like us:

Deja una respuesta