Note that things vary when managing different configurations per environment. See D8 Configuration Split.
Setup
Make sure your settings.php defines the sync directory at sites/default/config. This can look like the following:
if ($is_installer_url) { $config_directories = array( CONFIG_SYNC_DIRECTORY => 'sites/default/files', ); } else { $config_directories = array( CONFIG_SYNC_DIRECTORY => 'sites/default/config', ); }
- Export all the configuration from your site (using Saving Config Changes), and commit it to sites/default/config .
Saving Config Changes
When you want to push up new database setting changes collaboratively, do the following:
- Make your Database changes
- Example: Modify permissions
- Make a new feature branch
git checkout -b feature/yourname/kblog-2--permissions
- Download the configs
Visiting admin/config/development/configuration/full/export will let you export them
- Extract to the file system at web/sites/default/config
- Add only the changes that you need
- Do not overwrite changes that are unrelated to the feature you're working on
- git add permissions.yml
- Commit the changes
git commit -m "KBLOG-2 Update permissions"
- Push the changes up to the new branch
git push origin feature/yourname/kblog-2–permissions
- Open a Pull Request with the new change
Loading Config Changes
When you bring down new config changes through git, you'll want to import them to the database. To do this:
- Bring the changes down
- git pull
- Import the configs
- Visit admin/config/development/configuration/full/import and click Import All
Notes
drush config-import
drush config-export
Have configuration directories outside of webroot.
Commit to config/staging
.
Use drush config-import to import from staging to your Sync directory.
Use drush config-export to export from Sync to your staging directory.