Organization graph
What a change breaks in your other repositories
Every repository's graph knows the endpoints, channels and tables it serves and uses. Branchscope joins them across an owner's repositories, so a change shows who's on the other side, and the owner's Graph tab draws how its services connect.
Other repositories
The other side, on the change
A change that stops serving an endpoint or publishing a channel that another repository still uses is marked Breaking, with links to each caller; calls to endpoints nobody serves are Missing, and handlers it changed are Affected. Where a ruleset requires branchscope/review, Breaking holds back the merge. Repositories you can't read are left out, as if they didn't exist.
Breaking: stops serving DELETE /invoices/{}, which web-app and mobile-bff still call (with links to each call).
Joined from every repository's graph by endpoint, channel and table; compared with the default branch, or with what's deployed to production. Repositories you can't read stay invisible. The organization's Graph tab draws it all.
Graph
How your services connect
An organization's profile, and your own, has a Graph tab: services as boxes, with the calls, messages and shared tables between them. Select an arrow for the functions on each side. Findings list endpoints nobody calls, calls nobody serves, tables more than one service writes, and services that depend on each other in a cycle.
All services · 5 boxes, 4 connections
- web-app→billing-apicalls · 3 endpoints
- mobile-bff→billing-apicalls · 2 endpoints
- billing-api→mailerpublishes to · 1 channel
- billing-api→reportingshares · 1 table
Findings
- Unserved
GET /invoices/{}/pdfon billing-api is called, but nobody serves it. - Cycle 2 services depend on each other: billing-api → ledger → billing-api.
Views
Views with a link of their own
An organization's owners save views: a name, a link, a set of repositories and, if they like, the kinds of connection to draw. A view only changes what's drawn; findings, and a change's other repositories, still count every repository you can read.
Saved views
- Payments ?view=payments4 repositories
- Storefront ?view=storefront3 repositories
As deployed
Compared with what's running
Switch from the default branch to an environment, such as production, and each repository is compared at the commit of its current successful deployment there. One with no deployment, or whose deployed commit has no graph yet, stays at its default branch, and says so.
- acme/billing-apias deployed to production at a1b2c3d, 2 hours ago
- acme/web-appas deployed to production at 5e6f7a8, 2 hours ago
- acme/reportingnot deployed to production, so its default branch
Connect your repositories
Name your services in branchscope.json, push, and open your organization's Graph tab.