¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Git
  3. Git
Extrait - Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion)
Extractos del libro
Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion) Volver a la página de compra del libro

Git-Flow: workflow de empresa

Un sistema de gestión de ramas

Trabajar con Git en equipo no es algo intuitivo. Hay que formarse y probar varias maneras de trabajar para encontrar aquella que mejor convenga. En efecto, para que la utilización de un gestor de versión sea eficaz, se requiere que los participantes sigan las mismas prácticas.

Por ejemplo, no es fácil para un desarrollador saber cuándo crear una rama, cuándo crear un tag o incluso saber en qué parte debe fusionarse la rama de una nueva funcionalidad.

Vincent Driessen propuso un sistema eficaz de gestión de ramas en su blog profesional (http://nvie.com/posts/a-successful-git-branching-model). Este sistema de gestión de ramas está destinado a utilizarse desde equipos de pequeño tamaño hasta equipos de gran envergadura. El objetivo de este sistema es separar eficazmente las ramas y las diferentes versiones del proyecto. Este método de trabajo está muy difundido en los proyectos que utilizan Git, pero recibe algunas críticas de desarrolladores por considerarlo demasiado complejo y generar muchos conflictos innecesarios.

1. Las ramas eternas

Las ramas master y develop son ramas que nunca serán suprimidas durante toda la vida útil del proyecto. Son las únicas ramas que existen al inicio del proyecto y al final del proyecto.

a. La rama de producción (master)

Esta es la rama que contendrá todas las versiones publicadas por los usuarios. Es decir, que es la rama que recibirá todas las nuevas funcionalidades y todas las correcciones de errores («bugs»). Cada commit de esta rama está representado por una nueva versión definida por un tag. Todos los commits de esta rama son commits producidos por las fusiones de otras ramas (a excepción del commit de origen).

Estas son las ramas que pueden crearse...

Ejemplo de workflow

Para utilizar el método Git-Flow eficazmente, es preferible nombrar sus ramas con términos ingleses. De esta manera, todos los desarrolladores (españoles o extranjeros) serán capaces de entender el esquema rápidamente. Además, utilizar los nombres en inglés favorece la compatibilidad con las herramientas que conecten con un repositorio en modo Git-Flow.

Con el método Git-Flow, todos los merges deben efectuarse desactivando el avance rápido con el argumento --no-ff del comando git merge para que cada merge produzca un commit. Esto permite tener un histórico más claro y no contaminado por avances rápidos.

He aquí una visión esquemática de las ramas que componen un historial en un repositorio administrado por el método Git-Flow:

images/08-01.png

El esquema anterior representa el repositorio utilizado para el capítulo Escenario de equipo. El repositorio contiene un proyecto llamado improllow-up. Este proyecto permite a las empresas seguir más eficazmente las tareas de sus empleados.

He aquí la secuencia de las etapas del repositorio representadas por el esquema: 

  • C1 (master): primer commit del proyecto. Este commit añade la base del proyecto en el repositorio (versión V1.0.0).

  • C2 (develop): creación de la rama develop. Después de este commit, las dos ramas eternas se han creado.

  • C3 (graph_employee): creación...

Git-Flow intuitivo gracias a Tower

1. Cliente Git y Git-Flow

Tower es un cliente Git en forma de interfaz gráfica. Está diseñado para ser muy ergonómico y cuenta con funciones muy interesantes. En el momento de escribir estas líneas, Tower se vende por 59 euros más impuestos y ofrece un precio reducido para los estudiantes.

No existe ningún equivalente que integre Git-Flow de manera más completa en Windows. Sin embargo, existen clientes Git muy eficaces compatibles con Windows, como TortoiseGit, SmartGit (que integra Git-Flow), SourceTree y GitHub Desktop.

El contenido del proyecto no tiene aquí ninguna importancia. El único objetivo es obtener un historial compuesto de diferentes ramas representativas del método Git-Flow.

2. Caso práctico de uso

El repositorio resultante de este ejemplo se encuentra en los archivos de descarga: 08/git-flow.

Para crear un nuevo repositorio con Tower, se debe pulsar el botón Create a partir de la página que lista los repositorios utilizados:

images/08-02.png

Una vez creado el repositorio, Tower ofrece abrirlo con el botón Open de la siguiente ventana:

images/08-03.png

La ventana presenta información interesante sobre el repositorio, como la ruta del repositorio, la rama sobre la cual se coloca la referencia HEAD o el estado de los archivos. Una vez que el repositorio está abierto en Tower, hay que añadir el primer commit que formará...