Skip to content

Traceback when MkDocs directory is not the repository root #1

@uliska

Description

@uliska

I am trying to use the git-authors plugin with MkDocs in a context where the root of the MkDocs project is not the root of the repository, and this breaks with the following error:

Traceback (most recent call last):
  File "/home/uliska/.local/bin/mkdocs", line 10, in <module>
    sys.exit(cli())
  File "/home/uliska/.local/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/uliska/.local/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/uliska/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/uliska/.local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/uliska/.local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs/__main__.py", line 162, in build_command
    site_dir=site_dir
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs/config/base.py", line 197, in load_config
    errors, warnings = cfg.validate()
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs/config/base.py", line 107, in validate
    run_failed, run_warnings = self._validate()
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs/config/base.py", line 62, in _validate
    self[key] = config_option.validate(value)
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs/config/config_options.py", line 132, in validate
    return self.run_validation(value)
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs/config/config_options.py", line 572, in run_validation
    plgins[item] = self.load_plugin(item, cfg)
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs/config/config_options.py", line 587, in load_plugin
    plugin = Plugin()
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs_git_authors_plugin/plugin.py", line 12, in __init__
    self.util = Util()
  File "/home/uliska/.local/lib/python3.7/site-packages/mkdocs_git_authors_plugin/util.py", line 7, in __init__
    self.repo = Repo(path)
  File "/home/uliska/.local/lib/python3.7/site-packages/git/repo/base.py", line 184, in __init__
    raise InvalidGitRepositoryError(epath)

This is because

  • in GitAuthorsPlugin an Util() instance is created without path argument
  • which in util.py defaults to '.', i.e. the current working directory.
  • in pythongit Repo() expects the root directory.

I think that the GitAuthorsPlugin should make sure to determine the project's root directory, because I don't think it is an invalid case to have the project root differ from the repository root.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions