One thing that you can do in development (and even production for relatively low-volume wikis) is to invalidate caches whenever there are changes to LocalSettings.php
In previous versions of MediaWiki, this was done by default in “LocalSettings.php” using the following code:
Find out what is set, and where with these one-liners.
# Show a list of what php variables are set in the MezaLocalExtensions.yml
grep --perl-regexp --only-matching "^\s*(\\\$[^\[ ]+)" MezaLocalExtensions.yml | sed -e "s/^[[:space:]]*//" | sort -u
# Or more generally, all files in the configuration directory
find /opt/conf-meza/public -name '*yml' -o -name '*php' -exec bash -c 'echo -e "\n$0\n"; grep --perl-regexp --only-matching "^\s*(\\\$[^\[ ]+)" '{}' | sed -e "s/^[[:space:]]*//" | sort -u ' '{}' \;
# Just looking for one variable?
grep -r wgCacheEpoch /opt/.deploy-meza/ /opt/conf-meza/ /opt/htdocs/w/LocalSettings.php 2>/dev/null
# Above, we send errors to the bit bucket because you'll always get permission errors searching
# in /opt/conf-meza/secret/ (and users)
# Or, just --exclude those directories from the grep
grep -r wgCacheEpoch --exclude-dir secret --exclude-dir users /opt/.deploy-meza/ /opt/conf-meza/ /opt/htdocs/w/LocalSettings.php
If you are making repeated deploys, you may want to add a line in /src/roles/mediawiki/tasks/main.yml of force: no for tasks like “Ensure core meza extensions installed” so that you don’t have to wait for each extension repo to be queried and fetched. Note: you can also just skip installing extensions if you aren’t dealing with any extension code. meza deploy monolith --skip-tags extensions,core-extensions,smw-data,search-index