Git workflow automation to follow best practices when working with multiple environments
Project description
Git Flow
Herramienta para establecer un workflow siguiendo Conventional Commits (CC), Conventional Branch (CB), y SemVer.
Esta diseñada para facilitar la creación de commits y branches en un formato estandar, que permite derivar versiones automaticamente de los merges sobre ramas principales.
Instalación
Para instalar Git Flow, se sugiere utilizar pipx (seguir la
documentación para instalarlo). Una vez instalado pipx, simplemente clonamos el repositorio en una
carpeta local, y lo instalamos:
cd ~/Downloads
git clone git@bitbucket.org:sushi2717/git-flow.git
cd git-flow
pipx install .
Luego podemos verificar que se haya instalado correctamente ejecutando: git-flow -h
Para actualizarlo, hacemos un pull de los cambios recientes del repositorio, y hacemos el upgrade
mediante pipx:
cd ~/Downloads/git-flow
git pull
pipx upgrade git-flow
Configuración
Para poder usar la herramienta en un repositorio, necesitamos inicializarlo:
git-flow init
El comando solicitará 2 opciones:
-
Ramas principales: Ramas que representan los entornos principales del proyecto. Por ejemplo:
dev,test,prod. -
Remoto (opcional): Nombre del remoto que se usará para crear PRs, y taggear merges automáticamente. Por el momento, se soportan los siguientes remotos:
- Bitbucket
- Github: planeado
La configuración del remoto requiere tener un Access Token para poder crear los PRs automáticamente. El mismo se puede crear desde el repositorio al que se quiere dar acceso: "Repository settings" > "Access Tokens" > "Create access token". El token necesita permiso para Write en Pull Requests.
Luego se debe guardar el token dentro del repositorio a configurar, en el archivo
.repository-token. De no especificarse, los merges y tags se harán de forma local.
Utilización
Git Flow cuenta con 5 comandos principales para guiar el workflow (ver git-flow <command> -h para
más información):
new: Crea una nueva rama siguiendo CB.commit: Crea un commit siguiendo CC.merge: Mergea la rama actual a una de las ramas principales.tag: Crea un tag sobre el ultimo merge siguiendo SemVer.release: Prepara la rama actual para pasarse al siguiente entorno configurado
El workflow para el cual se penso la herramienta es el siguiente:
- Sobre la primer rama principal configurada (por ejemplo,
dev), se crea una nueva rama congit-flow new - Se realizan cambios y se commitean los mismos con
git-flow commit(se repite hasta que se considere que la rama esté lista para mergear) - Se ejecuta
git-flow mergepara mergear la rama al entorno que corresponda (en este caso,dev). En caso de tener un remoto configurado, el comando crea un PR para integrar el cambio. Si no, simplemente se ejecuta ungit mergesimple. - Para versionar este último merge, se ejecuta
git-flow tag, ya sea localmente o desde un pipeline para que se ejecute en cada merge. - Una vez que la rama fue correctamente integrada a un entorno (por ejemplo,
dev), se usagit-flow releasepara crear una nueva rama para integrar unicamente los cambios de esa rama sobre el siguiente entorno (por ejemplo,test). Si la rama original erafeature/my-new-feature, se crea la ramarelease/test/feature/my-new-featuresobretestque tiene los cambios de la rama original.
Taggeo automático por pipeline
Éste repositorio utiliza Git Flow para el taggeo automático usando pipelines, se puede ver el
archivo bitbucket-pipelines.yml como ejemplo. El comando git-flow tag soporta el pasaje del
token mediante la opción --token=<TOKEN>. Ver la sección Configuración para las
instrucciones de como generar este token. El mismo necesita scope write:repository:bitbucket.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file git_flow_envs-1.14.0.tar.gz.
File metadata
- Download URL: git_flow_envs-1.14.0.tar.gz
- Upload date:
- Size: 30.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abea5cb11b87aa6a181b27944900ab4aa3bd3e0aa6d8620595f51503d255b768
|
|
| MD5 |
df720aed952df684e268557383af5f19
|
|
| BLAKE2b-256 |
09baa66c526ae2701931c95a1a75b50c6900dda13367af1eab66bc9e1a6c4f40
|
File details
Details for the file git_flow_envs-1.14.0-py3-none-any.whl.
File metadata
- Download URL: git_flow_envs-1.14.0-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfea5df4e96266c9df5cb9ff19be7e79820a95085043e62963faec00e8b6e612
|
|
| MD5 |
8aa2237bd52a99bb54457ed1e7497faa
|
|
| BLAKE2b-256 |
bb65093f9eb844caf6d790f9ceabd9fc4ceffb6242435dae6e08b8a5a0c06f2a
|