Page MenuHomePhabricator

mwcli: Add something like gitup to pull all skins extensions and core & composer update
Open, LowPublic

Event Timeline

There are two repos with very similar names, this is the correct one: https://pypi.org/project/gitup/

Here are some of my thoughts on using gitup over the past year or so.

I find it useful that in gitup you can:

  • add git repos to a list so you don't have to type out each repo to update every time (although this might not be needed if mwcli is just updating all repos in the mediawiki/core directory or all repos downloaded via the get-code command)
  • add a directory to the list and all git repos within the directory are updated (as above this might not be needed in mwcli)
  • run a shell command on all registered git repos via the --exec command
  • delete remote-tracking branches that no longer exist on their remote via the -p/--prune flag

Possible improvements:

  • be able to update multiple repos at the same time (rather than one at a time) - probably best if this is configurable but defaults to 3(?) repos at a time
  • be able to filter to just update the main/master branch of each repo
  • update the git sub-modules as well
  • have different lists (again this might not be needed in mwcli)
  • have different list per directory (again this might not be needed in mwcli)
  • have a command to show the status of each repo. This can also be achieved if an "execute command" feature is added e.g. I currently use this gitup command gitup --exec "git -c color.ui=always status --short --branch"

Other ideas for this feature:

  • as well as running composer update in the mediawiki/core directory/repository, configure which other dirs/repos a composer update should be run (e.g. extensions/Wikibase)
  • run the update maintenance script (php maintenance/run.php update --quick) after updating git repos and doing a composer update.
  • repair the database (mw dev mysql exec -- mysqlcheck --repair -u root -ptoor --all-databases). I'm not sure when the databases need to be repaired/what causes them to fail but I currently have a script that repairs the databases, updates composer in mediawiki/core and extensions/Wikibase, and runs the maintenance script.