I am currently testing phabricator and found out that it's possible to enter config-values that break the config script.
Steps to reproduce:
- Install Sprint-extension as described here: https://github.com/wikimedia/phabricator-extensions-Sprint
- Try to temporarily deactivate sprint extension by giving it an empty path:
./config set load-libraries '{"sprint":""}'
- Now try to set any config variable e.g.:
./config set maniphest.points '{"enabled":false}'
- The tool will throw an Exception:
[2016-05-27 08:54:41] EXCEPTION: (PhutilBootloaderException) Include of '/__phutil_library_init__.php' failed! at [<phutil>/src/moduleutils/PhutilBootloader.php:209]
arcanist(head=master, ref.master=2234c8cacc21), phabricator(head=master, ref.master=5b77b86ffbf9), phutil(head=master, ref.master=5eaf0a9f5a35)
#0 PhutilBootloader::loadLibrary(string) called at [<phutil>/src/moduleutils/core.php:12]
#1 phutil_load_library(string) called at [<phabricator>/src/infrastructure/env/PhabricatorEnv.php:202]
#2 PhabricatorEnv::buildConfigurationSourceStack() called at [<phabricator>/src/infrastructure/env/PhabricatorEnv.php:95]
#3 PhabricatorEnv::initializeCommonEnvironment() called at [<phabricator>/src/infrastructure/env/PhabricatorEnv.php:75]
#4 PhabricatorEnv::initializeScriptEnvironment() called at [<phabricator>/scripts/__init_script__.php:21]
#5 init_phabricator_script() called at [<phabricator>/scripts/__init_script__.php:24]
#6 require_once(string) called at [<phabricator>/scripts/setup/manage_config.php:5]
From a users perspective, I think, that a wrong config-value should never break the config-tool itself. I should always be able to undo whatever my incompetence leads me to.
From a developers perspective I see, that the backlog does not pierce the Sprint-Extension's code, so I assume this could be a general Problem.