Updated: Comment #11
Problem/Motivation
The plan is to support the following use case:
Allow configuration between Drupal installations that are the same site. For example where we have dev and live installation. The live site was deployed by copying the database and files from the dev site. This means that we do not have a problem with UUIDs as modules have not been enabled on live.
Make the following possible (site A is the dev site and site B is the live site):
- Create site A by installing the standard profile
- (site A) Create a node type
- (site A) Enable forum
- (site A) Export configuration
- Create site B by Install Drupal and during install use the exported configuration
- (site A) Create a view
- (site A) Disable forum module
- (site A) Export configuration
- Synchronise configuration to site B
- (site A) Create a view
- (site B) Create a view with the same name
- (site A) Export configuration
- Try and fail to synchronise configuration to site B
Issues in order of priorities
- #2095489: Separate out module install config code from import code
- #2069373: Race conditions on import if CUD on ConfigEntity A triggers changes in ConfigEntity B
- #2133325: Create a site UUID on install and only allow config sync between sites with the same UUID
- #1613424: Allow to install a site if there is configuration already
- #2110615: Do not ship with default UUIDs; allow UUID change just after install instead
- Use config snapshot to detect changes on site before sync (need to create issue for this)
- #2124535: Raise an exception when a config write is triggered during import of a config entity
- #1842956: [Meta] Implement event listeners to validate imports
- #2030073: Config cannot be imported in order for dependencies
- #1808248: Add a separate module install/uninstall step to the config import process Note we must NOT use default configuration provided by module here - only use configuration from staging directory
- #2004370: Batch the configuration synchronisation process
Related Issues
#1515312: Add snapshots of last loaded config for tracking whether config has changed
#1609418: Configuration objects are not unique
#1613424: Allow to install a site if there is configuration already
#1703168: [Meta] Ensure that configuration system functionality matches expected workflows for users and devs
#1740378: Implement renames in the import cycle
#1831818: Test, improve, and document git config import workflow
#1851018: Improve breakpoint configuration implementation.
#2029771: Having installation profiles in system.module.yml causes config import to fail
#2029819: Implement a ThemeHandler to manage themes (@see ModuleHandler)
#2100043: Dynamically generated default YML use randomized UUIDs.
#2108809: Make config import/export tests pass with standard profile
#2108811: Refactor config import/export tests to allow for easy extension
#2108813: Add fancier config import/export test scenario
#2110615: Do not ship with default UUIDs; allow UUID change just after install instead
#2127573: Stop creating node, comment and custom block fields automatically and provide defaults in CMI
#2124619: Stop creating user_picture field programatically
#2127583: Stop creating administrator role actions programatically