Repositories in Diffusion have received some substantial changes around the editing/management UI, the APIs, and how URIs are configured.
These changes generally do not require any action unless you use the old APIs (see below), but they are fairly sweeping, so you should be aware of them and keep an eye out for possible issues even if you are not directly impacted.
See T10923 for known errata.
Editing and Management UIs
The old create flow and edit page have been updated. The new create flow has fewer steps and the new edit page is divided more clearly into sections:
Functionally, the new UIs are fairly similar the old UIs. The only major change here is that any user who can view the repository can now view the "Manage" UI to review edit history, check policies, etc (they can't actually edit anything, of course).
For an overview of the new management UI, see:
API Changes
The repository APIs have changed substantially. See T10748 for the primary task. In particular:
- repository.create, which barely worked, has been removed.
- diffusion.repository.edit replaces it. This endpoint can create and modify repositories.
- diffusion.uri.edit supplements diffusion.repository.edit, and allows you to create and modify repository URIs via the API.
- repository.query is now on its last legs and will be deprecated soon.
- diffusion.repository.search replaces it.
The new API endpoints are full-power modern endpoints. For an introduction to endpoints of these kinds, see:
For a general overview of creating repositories with the new API, see:
Additionally, bin/repository edit has been removed. Since introduction, this was slated for removal once Conduit supported its features.
If you make use of the old APIs, particularly repository.create, you should update your code to use diffusion.repository.edit instead.
URI Changes
Repository URI management has been reworked to be more flexible. See T10366 for the primary task. Broadly, repositories now have a list of associated URIs and you can configure fetch, push, serve, and display behaviors for each URI independently:
This supports various new use cases like proxying reads through Phabricator so you can apply permissions or cloning from one location but showing users a different clone URI, generally makes URI management more explicit, and simplifies internal URI management.
This document walks through use cases and configuration: