Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork939
Closed
Labels
Milestone
Description
This is a weird scenario, but if you init git repo in the root directory(e.g. D:\) and try to add a file using gitpython, it will throw a ValueError:
Absolute path `D:\\file` is not in git repository at `D:\\`
The reason for this is improper validation in _to_relative_path method located at git/index/base.py:
def _to_relative_path(self, path): """:return: Version of path relative to our git directory or raise ValueError if it is not within our git direcotory""" if not osp.isabs(path): return path if self.repo.bare: raise InvalidGitRepositoryError("require non-bare repository") relative_path = path.replace(self.repo.working_tree_dir + os.sep, "") if relative_path == path: raise ValueError("Absolute path %r is not in git repository at %r" % (path, self.repo.working_tree_dir)) return relative_path
I.e. when path is/file
and working_tree_dir is/
, relative_path stays equal to path, becauseself.repo.working_tree + os.sep
is equal to//
. The way to solve this is to simply use os.path.relpath methond. Please see pull-request attached.