Skip to content

Commit

Permalink
Merge pull request gitpython-developers#1961 from Andrej730/main
Browse files Browse the repository at this point in the history
_to_relative_path to support mixing slashes and backslashes
  • Loading branch information
Byron committed Sep 14, 2024
2 parents cfadd9e + 8327b82 commit 3470fb3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion git/index/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -653,7 +653,7 @@ def _to_relative_path(self, path: PathLike) -> PathLike:
return path
if self.repo.bare:
raise InvalidGitRepositoryError("require non-bare repository")
if not str(path).startswith(str(self.repo.working_tree_dir)):
if not osp.normpath(str(path)).startswith(str(self.repo.working_tree_dir)):
raise ValueError("Absolute path %r is not in git repository at %r" % (path, self.repo.working_tree_dir))
return os.path.relpath(path, self.repo.working_tree_dir)

Expand Down
12 changes: 12 additions & 0 deletions test/test_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -1181,6 +1181,18 @@ def test_index_add_pathlike(self, rw_repo):

rw_repo.index.add(file)

@with_rw_repo("HEAD")
def test_index_add_non_normalized_path(self, rw_repo):
git_dir = Path(rw_repo.git_dir)

file = git_dir / "file.txt"
file.touch()
non_normalized_path = file.as_posix()
if os.name != "nt":
non_normalized_path = "/" + non_normalized_path[1:].replace("/", "//")

rw_repo.index.add(non_normalized_path)


class TestIndexUtils:
@pytest.mark.parametrize("file_path_type", [str, Path])
Expand Down

0 comments on commit 3470fb3

Please sign in to comment.