{"id":38056285,"url":"https://github.com/specificlanguages/cascading-merge","last_synced_at":"2026-01-16T20:24:58.160Z","repository":{"id":215260207,"uuid":"738477153","full_name":"specificlanguages/cascading-merge","owner":"specificlanguages","description":"A reusable workflow automating cascading merges of MPS-based libraries","archived":false,"fork":false,"pushed_at":"2024-11-20T08:42:28.000Z","size":17,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-11-20T10:19:45.004Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/specificlanguages.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2024-01-03T10:12:49.000Z","updated_at":"2024-11-16T14:53:42.000Z","dependencies_parsed_at":"2024-01-04T14:31:15.728Z","dependency_job_id":"2facfbb4-7c4e-4247-b43f-133cf94f213e","html_url":"https://github.com/specificlanguages/cascading-merge","commit_stats":null,"previous_names":["specificlanguages/mps-automerge","specificlanguages/cascading-merge"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/specificlanguages/cascading-merge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specificlanguages%2Fcascading-merge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specificlanguages%2Fcascading-merge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specificlanguages%2Fcascading-merge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specificlanguages%2Fcascading-merge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/specificlanguages","download_url":"https://codeload.github.com/specificlanguages/cascading-merge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specificlanguages%2Fcascading-merge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28482267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-16T20:24:57.387Z","updated_at":"2026-01-16T20:24:58.144Z","avatar_url":"https://github.com/specificlanguages.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\n\nAutomates cascading merges of MPS projects.\n\nThe action is expected to be called from an on-push workflow for a branch specific to a certain MPS version. It will\ncreate a PR to merge the current maintenance branch into the next maintenance branch (in alphabetic order), or the\ndefault branch if there is no next maintenance branch.\n\nIf a pull request for the current branch exists already, the action will succeed without creating a new branch.\n\nThe user that pushed the changes is added as an assignee and a reviewer to the PR.\n\nThe action creates a \"merge\" branch from the original branch where any merge conflicts can be fixed, or further\nadjustments, such as migrations, can be performed before the branch is merged.\n\n# Parameters\n\nSee the [action description file](action.yml) for a list of parameters.\n\n# Example usage\n\n```yaml\nname: PR to merge into the next version\n\non:\n  push:\n    branches:\n      - 'maintenance/mps*'\n\njobs:\n  create-pr:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Create PR\n        uses: specificlanguages/cascading-merge@v2\n        with:\n          branch_prefix: maintenance/MPS-\n          exclude_branch_prefix: maintenance/MPS-3\n          merge_prefix: merge/MPS-\n          default_merge_prefix: merge/\n          update_from_base: true\n          token: ${{ secrets.MY_TOKEN }}\n```\n\nGiven the above workflow, when a user pushes to a branch called `maintenance/MPS-2021.3`, a PR will be automatically\ncreated to merge `maintenance/MPS-2021.3` into `maintenance/MPS-2022.2`, if the latter exists.\n\nIn order to create the PR, a branch called `merge/MPS-2022.2` will be created at first (i.e. the name is based on the\ndestination branch of the PR). The branch starts at `maintenance/MPS-2021.3`. If the branch already exists, it will be\nupdated with the latest state of `maintenance/MPS-2021.3` (fast-forwarded if possible, merged otherwise).\n\nIf it is not possible to update the merge branch to contain all the new changes, the action will fail.\n\nOtherwise, the action will optionally merge `maintenance/MPS-2022.2` into the merge branch, if `update_from_base` is set\nto `true`.\n\nWhen merging to the default branch, `default_merge_prefix` is used instead of `merge_prefix` to construct the branch\nname.\n\nThe user that triggered the action (`github.actor`) will be added as both the assignee and the reviewer of the pull\nrequest. This is going to be the user that pushed the original change or performed the preceding cascading merge.\n\nThe action succeeds if the PR was created and could be updated from the original branch, even if some intermediate steps\n(such as updating the branch from base or adding the reviewer) fail.\n\n# Outputs\n\nThe action outputs the PR number (`pr_number`) and PR URL (`pr_url`).\n\n# Custom GitHub token\n\nIf `token` is provided, it is used for repository operations. Otherwise, the repository token (`github.token`) is used.\nAny actions or API requests performed with the repository token do not trigger workflows, so, for example, PRs created\nby this action will not have PR checks triggered for them.\n\nTherefore, if you rely on GitHub Workflows for your PR checks, be sure to provide a custom token. A fine-grained token\ncan be used, the required permissions are read/write access to code (repository content) and pull requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecificlanguages%2Fcascading-merge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspecificlanguages%2Fcascading-merge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecificlanguages%2Fcascading-merge/lists"}