This adds the "no-run-if-empty" flag to the xargs invocation. Otherwise,
if git diff names no files, the command is run once with no agument
specified which leads to running on a default list of files that appears
to include ignored files and files in submodules.
I am uneasy about how this works (it means that `pre-commit run --all`
doesn't actually check all files) but that's a separate issue.