On Wed, Jan 20, 2016 at 7:56 AM, Ray Paseur ray.paseur@armedia.com wrote:
Colleagues: I'm looking for some "best practices" advice here.
I have three Wikis, Dev, Test, and Prod. Dev is the sandbox. Test is for user-acceptance. Prod is the public face - exactly what you would expect.
For the most part, these Wikis share an identical code base on Git branch "master." Development is done in branches that are pulled into master as user acceptance is completed.
There are differences between the Wikis environments, and so I've got three LocalSettings.php files. I can't just pull the Dev into Test or the Test into Prod because of differences in the LocalSettings (database connections, error_reporting, etc). Right now I'm doing a manual process outside of Git control. This makes me itch.
I would like to keep LocalSettings.php under Git version control with the rest of the code, but that means three files with the same name.
Would I be on firm ground if I modified LocalSettings.php to automatically detect which Wiki is in play and adjust its own settings? How do others handle issues like this?
One public and non-trivial example of wiki farm configuration is the configuration system used for the Wikimedia production and beta wiki farms [0]. The heart of this system is MWMultiVersion [1] and the configuration files [2] that populate and use a SiteConfiguration [3] object that chooses different settings based on the information provided by MWMultiVersion. Besides the public configuration data shown in the git repository [0] there are private settings [4] which are only committed locally on the deployment server and distributed from there to all of the MediaWiki servers. This system is pretty complicated and likely to be overkill the majority of wiki farms, but it does show some techniques for managing complex configuration.
A much more simple solution could be just to replace LocalSettings.php's contents with an include of common settings and conditional include of environment specific settings that you keep in separate files (e.g. LocalSettings.dev.php).
[0]: https://phabricator.wikimedia.org/diffusion/OMWC/ [1]: https://wikitech.wikimedia.org/wiki/Heterogeneous_deployment#mediawiki-stagi... [2]: https://wikitech.wikimedia.org/wiki/Heterogeneous_deployment#mediawiki-stagi... [3]: https://doc.wikimedia.org/mediawiki-core/master/php/classSiteConfiguration.h... [4]: https://phabricator.wikimedia.org/diffusion/OMWC/browse/master/private/Priva...
Bryan