{"id":16959785,"url":"https://github.com/jondotsoy/feature-branching","last_synced_at":"2025-07-31T23:35:09.312Z","repository":{"id":188164924,"uuid":"678214981","full_name":"JonDotsoy/feature-branching","owner":"JonDotsoy","description":"Automate merge all branching tagged","archived":false,"fork":false,"pushed_at":"2024-04-10T14:40:34.000Z","size":2447,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-02-11T12:23:12.268Z","etag":null,"topics":["feature-branching","git-branch","github-action"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JonDotsoy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-14T03:12:12.000Z","updated_at":"2023-08-20T03:59:36.000Z","dependencies_parsed_at":"2023-08-20T04:08:41.713Z","dependency_job_id":"dd3f7f61-5ca6-4f0b-a27b-74f07c54af4f","html_url":"https://github.com/JonDotsoy/feature-branching","commit_stats":null,"previous_names":["jondotsoy/prerelease-action","jondotsoy/feature-branching"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonDotsoy%2Ffeature-branching","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonDotsoy%2Ffeature-branching/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonDotsoy%2Ffeature-branching/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonDotsoy%2Ffeature-branching/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JonDotsoy","download_url":"https://codeload.github.com/JonDotsoy/feature-branching/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247356354,"owners_count":20925810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["feature-branching","git-branch","github-action"],"created_at":"2024-10-13T22:46:12.191Z","updated_at":"2025-04-05T15:26:40.163Z","avatar_url":"https://github.com/JonDotsoy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Feature Branching v2\n\nAutomatiza el merge de todos los branch que cuenten con un label asociado.\n\nAutomatiza los merge de los cambios previo al lanzamiento en una única rama que\ncontiene todos los cambios de todos los PR que futuramente puede ser usados para\nla rama principal. Evita pasar cambios a la rama de desarrollo si estos nos han\nfinalizados o requieren mejoras. Ideal si se cuenta con un solo ambiente de\nstaging anidado a la rama de desarrollo.\n\n**Ventajas:**\n\n- Elimina ceremonias coordinación despliegue a staging\n- Fácilmente configurable\n- Evita crear cambios revert en las ramas no listas para ser productiva\n- Crea filosofía para despliegue usando nomenclatura el los nombres de PRs\n- Fácilmente adaptable a trunks base y git flow\n- Mantiene historia clara (No require mergear multiples PRs a master)\n- Claridad de cambios que pasan a productivo y los que aun no desde el panel de\n  GitHub\n- Evita multiples PRs anidados\n- Destaca conflictos antes de mergear solución, ya que automatiza mensajes de\n  alerta.\n\n## Configurar action\n\n1. Crea tu primer archivo action `.github/workflows/feature-branching.yml` con el\n   siguiente contenido.\n\n2. Vamos a configurar los eventos `pull_request` y `push` para que se ejecute el\n   flujo cuando se asigne o des-asigne una label a la rama base.\n   ```yaml\n   on:\n    workflow_dispatch: {}\n    pull_request:\n      types:\n        - labeled\n        - unlabeled\n        - synchronize\n        - ready_for_review\n      branches:\n        - develop\n    push:\n      branches:\n        - develop\n   ```\n\n3. Vamos a configurar la acción\n   [feature-branching](https://github.com/JonDotsoy/feature-branching) donde\n   tenemos que definir la rama base y que label se usara para crear la historia\n   mesclada. La acción necesita previamente tener todos la historia de git, para\n   esto usaremos la acción\n   [actions/checkout@v3](https://github.com/actions/checkout)\n\n   \u003e Es necesario configurar la variable de ambiente `GH_TOKEN` para que pueda\n   \u003e leer los PR del proyecto.\n\n   ```yaml\n   - uses: actions/checkout@v3\n     with:\n       fetch-depth: 0\n   - uses: JonDotsoy/feature-branching@v2\n     with:\n       base_brach: develop\n       label_name_to_merge: next-feature\n     env:\n       GH_TOKEN: ${{ github.token }}\n   ```\n\n4. Crea un PR que este apuntando a la rama base `develop` y a continuación\n   asigna el label `next-feature` para que se encargue de crear la historia ya\n   combinada.\n\n   \u003cimg src=\"./docs/img/snap-prs-on-github.png\" width=\"400\" alt=\"Snapshot of https://github.com/JonDotsoy/feature-branching-demo/pulls\"/\u003e\n\n5. Ahora se puede ver en la historia una nueva rama `pre-develop` que une la\n   historia principal (`develop`) con los PRs que cuentan con el label\n   `next-feature` en una nueva rama.\n\n   \u003cimg src=\"./docs/img/snap-to-network-history.png\" width=\"400\" alt=\"snap to Network graph\"/\u003e\n\n### Ejemplo completo\n\n```yaml\nname: feature-branch\n\non:\n  workflow_dispatch: {}\n  pull_request:\n    types:\n      - labeled\n      - unlabeled\n      - synchronize\n      - ready_for_review\n    branches:\n      - develop\n  push:\n    branches:\n      - develop\n\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  merge:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n      - uses: JonDotsoy/feature-branching@v2\n        with:\n          base_brach: develop\n          label_name_to_merge: next-feature\n        env:\n          GH_TOKEN: ${{ github.token }}\n      - run: |\n          echo feature-branching.outputs.ref: ${{ steps.feature-branching.outputs.ref\t }}\n      - run: |\n          echo feature-branching.outputs.changed: ${{ steps.feature-branching.outputs.changed }}\n      - run: |\n          echo feature-branching.outputs.pr_name: ${{ steps.feature-branching.outputs.pr_name }}\n```\n\n## Configuración\n\n|         Input         | Descripción                                                           |\n| :-------------------: | :-------------------------------------------------------------------- |\n| `label_name_to_merge` | Label que se usara para filtrar los PRs que coincidan                 |\n|     `base_brach`      | Nombre de la rama que se usara como base para crear el PR pre-release |\n|  `destination_brach`  | Nombre de la rama pre-release                                         |\n|   `merge_strategy`    | Describe la estrategia a usar al momento de mergear las ramas. Leer mas en [https://git-scm.com/docs/merge-strategies](https://git-scm.com/docs/merge-strategies) |\n\n## Salida\n\n|  Output   | Descripción                                                                                            |\n| :-------: | :----------------------------------------------------------------------------------------------------- |\n| `changed` | `true` si existe cambios en la historia, de otro modo retorna `false`                                  |\n| `pr_name` | Retorna el valor de `destination_brach` cuenta con historia mergeada de otro modo retorna `base_brach` |\n|   `ref`   | Retorna the hash asociado al ultimo commit                                                             |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjondotsoy%2Ffeature-branching","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjondotsoy%2Ffeature-branching","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjondotsoy%2Ffeature-branching/lists"}