{"id":25430565,"url":"https://github.com/vpukhanov/cascade","last_synced_at":"2026-01-16T23:28:11.703Z","repository":{"id":275297376,"uuid":"925677109","full_name":"vpukhanov/cascade","owner":"vpukhanov","description":"CLI tool that applies a patch or a script across multiple Git repositories","archived":false,"fork":false,"pushed_at":"2025-02-10T19:25:54.000Z","size":32,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-28T11:42:23.311Z","etag":null,"topics":["cli","codemod","git","go","golang","patch","tools"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpukhanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2025-02-01T13:20:14.000Z","updated_at":"2025-05-03T20:38:15.000Z","dependencies_parsed_at":"2025-02-01T14:30:19.464Z","dependency_job_id":"4b61591d-7073-48f6-bf16-d28a094c0d18","html_url":"https://github.com/vpukhanov/cascade","commit_stats":null,"previous_names":["vpukhanov/cascade"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vpukhanov/cascade","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpukhanov%2Fcascade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpukhanov%2Fcascade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpukhanov%2Fcascade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpukhanov%2Fcascade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpukhanov","download_url":"https://codeload.github.com/vpukhanov/cascade/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpukhanov%2Fcascade/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269819032,"owners_count":24480087,"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","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","codemod","git","go","golang","patch","tools"],"created_at":"2025-02-17T03:39:23.301Z","updated_at":"2026-01-16T23:28:11.671Z","avatar_url":"https://github.com/vpukhanov.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cascade\n\nCascade is a CLI tool designed to apply changes across multiple git repositories efficiently. It automates the process of fetching the latest changes, creating branches, applying patches or executing scripts, and generating pull requests.\n\n\u003e [!WARNING]\n\u003e Cascade is a work in progress; some features may not function as intended. To prevent data loss, only run the program on repositories without unpushed important changes.\n\n## Installation\n\nIf you have Homebrew installed on macOS or Linux, you can install Cascade using:\n\n```sh\nbrew install vpukhanov/tools/cascade\n```\n\nIf you have Go installed on your system, you can install Cascade directly using the `go install` command:\n\n```sh\ngo install github.com/vpukhanov/cascade@latest\n```\n\nAlternatively, you can download the binary from the [Releases page](https://github.com/vpukhanov/cascade/releases) of the repository:\n\n1. Download the archive for your operating system and architecture.\n2. Extract the archive:\n   - On macOS: Double-click the .zip file or use `unzip cascade_*_Darwin_*.zip`\n   - On Linux: `tar -xzf cascade_*_Linux_*.tar.gz`\n   - On Windows: Extract the .zip file using File Explorer or a tool like 7-Zip\n3. Move the `cascade` binary to a directory in your system's `PATH`.\n\n## Usage\n\nTo apply changes across repositories:\n\n```bash\ncascade apply \\\n  --patch ./changes.patch \\    # Path to patch file (or --script)\n  --branch update-logging \\    # New branch name\n  --message \"Update logging\" \\ # Commit message\n  ./repo1 ./repo2              # Repository paths\n\n# Alternative using a script\ncascade apply \\\n  --script ./update.sh \\\n  --branch refactor-components \\\n  --message \"Refactor components\" \\\n  ./repo1 ./repo2\n\n# Apply changes to a specific base branch and update it first\ncascade apply \\\n  --patch ./changes.patch \\\n  --branch feature/update \\\n  --message \"Update dependencies\" \\\n  --base-branch main \\         # Branch to apply changes to\n  --pull \\                     # Pull latest changes first\n  --push \\                     # Push new branch to origin\n  ./repo1 ./repo2\n```\n\nRequired parameters:\n\n- Repository paths - One or more paths to git repositories to modify (as positional arguments)\n- `--patch` or `--script` - Path to patch file or executable script\n- `--branch` - Name for the new branch that will be created\n- `--message` - Commit message used for the changes\n\nOptional parameters:\n\n- `--base-branch` - Branch to check out and apply changes to (default: current branch)\n- `--pull` - Pull latest changes from remote before applying changes (default: false)\n- `--push` - Push changes to remote after applying them (default: false)\n- `--no-verify` - Skip git commit and push hooks (default: false)\n- `--stash` - Stash tracked and untracked changes before applying changes (default: false)\n- `--open-remote-url` - Open the last URL from git push output in the default browser, often links to the PR/MR creation page with default Github and Gitlab server configurations (requires `--push`, default: false)\n\nTo see available commands:\n\n```bash\ncascade --help\n```\n\nTo check the version:\n\n```bash\ncascade --version\n```\n\n## Development\n\nTo run the tests:\n\n```bash\ngo test ./...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpukhanov%2Fcascade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpukhanov%2Fcascade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpukhanov%2Fcascade/lists"}