Skip to content
Branch: master
Go to file

Latest commit


Failed to load latest commit information.
Latest commit message
Commit time

Magento Configuration Sync

This is a tool designed to allow teams to keep Magento (1.x and 2.x supported) configuration under version control, eliminating the unknown when tracking down potentially configuration related bugs.


File Syntax

The configuration values are stored in a YAML file. The format of the file is as follows:

       path: value

For example:

        dev/debug/template_hints: 0
        dev/debug/template_hints: 1
        currency/options/base: GBP
        dev/restrict/allow_ips: null

The above will:

  • disable template hints on product;
  • enable template hints on the development environment;
  • set the currency to Pounds Sterling in the store scope for the store with ID #1;
  • ensure the allowed development ip's are inherited from the website for store #1.

Valid scope keys are:

  • default
  • stores-$id
  • websites-$id


php bin/mageconfigsync --help

Most commands take an optional argument of --magento-root if not running from within a Magento directory and an optional argyment of --env used to describe the current environment of the configuration.


php bin/mageconfigsync dump --help

The dump command outputs the current contents of the configuration as YAML to stdout. Specify --env and the environment will be added as the first key, for convenience.


php bin/mageconfigsync load --help

The load command synchronises the database with the contents of the file. Any changed lines will be output to stderr. The --env option will determine which section of the YAML file is loaded.


php bin/mageconfigsync diff --help configuration_file.yaml

Example Scenario

Thanks to the symfony/yaml component we can use all the tricks YAML provides us, including merge keys. Consider the following file, config.yml:

  default: &prod_global
    currency/options/base: GBP
    dev/debug/template_hints: 0

    <<: *prod_global
    dev/debug/template_hints: 1

Our aim is to ensure that the currency is always set to GBP, regardless of the environment, but template hints should only be enabled for the local environment.

On our development machine we can pull our latest changes and run the following command to get the configuration just as we want it:

php bin/mageconfigsync load --magento-root ~/Sites/magento --env dev config.yml

We can also use this config.yml as part of our deployment process. Consider a workflow like the following:

// Take a backup of the configuration, incase we need to restore as part of a rollback
php bin/mageconfigsync dump --env prod > config.yml.pre-deploy

// Give us a diff for the deployment log so we can see what's about to be changed
php bin/mageconfigsync diff --file-env prod config.yml

// Sync the latest configuration changes to prod
php bin/mageconfigsync load --env prod config.yml

Congratulations, your Magento configuration is now under control, is auditable and consistent.

You can’t perform that action at this time.