When git submodule update fails, Quibble does not catch the issue and keep processing:
```
INFO:quibble.cmd:Updating git submodules of extensions and skins
extensions/Wikibase/.gitmodules
...
Cloning into 'view/lib/wikibase-serialization'...
Submodule path 'view/lib/wikibase-serialization': checked out '3cd428fa063d375291f87359c02d8d1147b6e0fb'
Unable to checkout '7581ce4c6f98a36209bebb8e2d4f4158c943c629' in submodule path 'view/lib/wikibase-data-model'
INFO:zuul.CloneMapper:Workspace path set to: ./
```
Probably git submodule just exit 0 when that should be a hard fail.
The relevant Quibble code is:
```
lang=python,name=quibble/cmd.py
def ext_skin_submodule_update(self):
self.log.info('Updating git submodules of extensions and skins')
# From JJB macro ext-skins-submodules-update
# jjb/mediawiki-extensions.yaml
subprocess.check_call([
# Do not add ., or that will process mediawiki/core submodules in
# wmf branches which is a mess.
'find', 'extensions', 'skins',
'-maxdepth', '2',
'-name', '.gitmodules',
'-print',
'-execdir', 'bash', '-xe', '-c',
'\n'.join([
'git submodule foreach git clean -xdff -q',
'git submodule update --init --recursive',
'git submodule status',
]),
';', # end of -execdir
], cwd=self.mw_install_path)
```