Overview¶
What is changes-roller?¶
changes-roller is a command-line tool for creating and managing coordinated patch series across multiple Git repositories simultaneously. It automates the workflow of applying consistent changes to many projects and optionally submitting them for code review.
When you need to apply the same change across multiple repositories—whether it’s a security patch, dependency update, or configuration change—doing it manually is time-consuming and error-prone. You have to clone each repository, apply the change, commit, and submit for review, repeating this process dozens of times.
changes-roller automates this workflow. Write your patch script once, and it executes across all repositories in parallel. Changes are applied consistently with uniform commit messages, and optionally submitted for code review—all from a single command.
Perfect for:
Security updates across multiple microservices
Dependency upgrades throughout your service ecosystem
API migrations affecting client libraries
License header updates for compliance
Configuration file standardization
Any scenario requiring identical changes across multiple repositories
Configure once, execute everywhere. You provide the repositories to update and a script containing your changes. changes-roller handles everything else—cloning, patching, testing, committing, and submitting for review. Parallel execution means 50 repositories finish almost as quickly as one. Built-in error handling ensures you get clear feedback about any issues, while successful repositories continue processing.
Problem Statement¶
Software organizations often need to apply the same changes across multiple related projects—such as security updates, dependency upgrades, API migrations, or compliance fixes. Doing this manually for dozens of repositories is:
Time-consuming: Cloning, patching, committing, and submitting each project individually
Error-prone: Risk of inconsistent changes or missing repositories
Tedious: Repetitive tasks that could be automated
Hard to track: Difficult to maintain overview of progress across all projects
Goals and Objectives¶
Primary Goals¶
Enable bulk patching of multiple Git repositories from a single command
Automate repetitive Git operations (clone, commit, stage)
Ensure consistency of changes and commit messages across all projects
Integrate with existing workflows (testing, code review)
Provide clear feedback on success/failure for each repository
Non-Goals¶
Not a version control system replacement
Not a patch management system for tracking patch state over time
Not a code review platform (integrates with existing ones)