Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3470fb3

Browse files
authored
Merge pull request #1961 from Andrej730/main
_to_relative_path to support mixing slashes and backslashes
2 parents cfadd9e + 8327b82 commit 3470fb3

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

‎git/index/base.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,7 @@ def _to_relative_path(self, path: PathLike) -> PathLike:
653653
return path
654654
if self.repo.bare:
655655
raise InvalidGitRepositoryError("require non-bare repository")
656-
if not str(path).startswith(str(self.repo.working_tree_dir)):
656+
if not osp.normpath(str(path)).startswith(str(self.repo.working_tree_dir)):
657657
raise ValueError("Absolute path %r is not in git repository at %r" % (path, self.repo.working_tree_dir))
658658
return os.path.relpath(path, self.repo.working_tree_dir)
659659

‎test/test_index.py‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,6 +1181,18 @@ def test_index_add_pathlike(self, rw_repo):
11811181

11821182
rw_repo.index.add(file)
11831183

1184+
@with_rw_repo("HEAD")
1185+
def test_index_add_non_normalized_path(self, rw_repo):
1186+
git_dir = Path(rw_repo.git_dir)
1187+
1188+
file = git_dir / "file.txt"
1189+
file.touch()
1190+
non_normalized_path = file.as_posix()
1191+
if os.name != "nt":
1192+
non_normalized_path = "/" + non_normalized_path[1:].replace("/", "//")
1193+
1194+
rw_repo.index.add(non_normalized_path)
1195+
11841196

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

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /