- Product name: Batch Changes (formerly known as Campaigns)
- Access and pricing: Paid add-on for Enterprise customers; all customers can try the product (limit: 10 changesets)
Sourcegraph Batch Changes enables developers to automate and manage large-scale code changes across all of their repositories and code hosts.
When developers need to make changes across multiple repositories or workspaces:
- Asking each repository owner to make changes takes a lot of time and effort
- Tracking changes to many repositories requires spreadsheets and manual labor
- Automating applying changes with one-off scripts is brittle
- Reduce the time it takes to make large-scale code changes by up to 80%
- Turn control back to the developer making the change. Instead of asking for help, they can automate the change and ask for a review.
There are many ways to get value out of Batch Changes, but here are the two approaches that are the most successful:
- Use cases: Update platform components / libraries
- User persona: a platform team that is responsible for a framework or platform. Sample teams: Java platform team, client platform team, frontend platform team.
- Painpoint: When shipping new internal library versions with breaking changes, getting other teams to upgrade takes a lot of time and effort.
- Product use case: When updating boilerplate code, internal libraries, or frameworks across a company, use Batch Changes to rollout the upgrade to all consumer repositories.
- Sponsor: developer experience team
- Use cases: Maintain infra or respond to incidents
- User persona: an infrastructure team, sometimes also responsible for developer experience
- Painpoint: Infrastructure or configuration files have a lot of repetitive / boilerplate code that is very time-consuming to change.
- Product use case: ship updates to configuration across many repositories.
- Quickly edit every CI, build, and other configuration files to make changes such as altering steps, migrating versions or changing base images.
- Update infrastructure-as-code (eg. Terraform) files across many repositories
- Code security When problems occur with critical security updates, every hour that goes by increases risk. Batch Changes enables you to find any place where vulnerabilities exist and then refactor code to replace insecure functions, update vulnerable packages, or modify container configurations across hundreds of repositories.
- Refactoring: Use language-aware tooling of your choice to perform complex refactors like updating an API and its function calls or replacing libraries entirely.
Here is a list of detailed usage examples (private).
When talking to a platform, infrastructure or developer experience team, or as a starting point:
- How do you make large scale code changes at your company? Do you have any automation in place to fix / upgrade code at scale? What is it used for?
- Tell me about a time you had to change (functions, configuration, libraries) across your codebase?
- How does the core / platform team make sure that their internal customers upgrade to up to date libraries?
- What framework boilerplate code do you have to update?
If the developer does not know, default to:
- Tell me about a time you were asked to merge a change from a framework library?
- Tell me about a time you were blocked because an internal library wasn’t updated?
- Tell me about a time you were tracking pull requests in a spreadsheet?
- Batch Changes strategy page
- Demo video
- Blog post
- (private) AE training recording slides
- Running batch changes server-side (Beta)
How to have fruitful conversations with: