code: def cli(  # pylint: disable=too-many-arguments
          ctx, target, config, c, commits, extra_path, ignore, msg_filename,
          verbose, silent, debug,
  ):
      
  
      try:
          if debug:
              logging.getLogger("gitlint").setLevel(logging.DEBUG)
  
          log_system_info()
  
          # Get the lint config from the commandline parameters and
          # store it in the context (click allows storing an arbitrary object in ctx.obj).
          config, config_builder = build_config(ctx, target, config, c, extra_path, ignore, verbose, silent, debug)
  
          LOG.debug(u"Configuration\n%s", ustr(config))
  
          ctx.obj = (config, config_builder, commits, msg_filename)
  
          # If no subcommand is specified, then just lint
          if ctx.invoked_subcommand is None:
              ctx.invoke(lint)
  
      except GitContextError as e:
          click.echo(ustr(e))
          ctx.exit(GIT_CONTEXT_ERROR_CODE)
docs: Git lint tool, checks your git commit messages for styling issues