code: def _run_hooks(config, hooks, args, environ):
      
      skips = _get_skips(environ)
      cols = _compute_cols(hooks, args.verbose)
      filenames = _all_filenames(args)
      filenames = filter_by_include_exclude(filenames, '', config['exclude'])
      classifier = Classifier(filenames)
      retval = 0
      for hook in hooks:
          retval |= _run_single_hook(classifier, hook, args, skips, cols)
          if retval and config['fail_fast']:
              break
      if retval and args.show_diff_on_failure and git.has_diff():
          if args.all_files:
              output.write_line(
                  'pre-commit hook(s) made changes.\n'
                  'If you are seeing this message in CI, '
                  'reproduce locally with: `pre-commit run --all-files`.\n'
                  'To run `pre-commit` as part of git workflow, use '
                  '`pre-commit install`.',
              )
          output.write_line('All changes made by hooks:')
          subprocess.call(('git', '--no-pager', 'diff', '--no-ext-diff'))
      return retval
docs: Actually run the hooks.