summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git/index/base.py4
-rw-r--r--test/test_index.py11
2 files changed, 13 insertions, 2 deletions
diff --git a/git/index/base.py b/git/index/base.py
index edc64875..1c56a219 100644
--- a/git/index/base.py
+++ b/git/index/base.py
@@ -617,11 +617,11 @@ class IndexFile(LazyMixin, git_diff.Diffable, Serializable):
paths = []
entries = []
# if it is a string put in list
- if isinstance(items, str):
+ if isinstance(items, (str, os.PathLike)):
items = [items]
for item in items:
- if isinstance(item, str):
+ if isinstance(item, (str, os.PathLike)):
paths.append(self._to_relative_path(item))
elif isinstance(item, (Blob, Submodule)):
entries.append(BaseIndexEntry.from_blob(item))
diff --git a/test/test_index.py b/test/test_index.py
index d6e0fb81..3bebb382 100644
--- a/test/test_index.py
+++ b/test/test_index.py
@@ -37,6 +37,8 @@ from gitdb.base import IStream
import os.path as osp
from git.cmd import Git
+from pathlib import Path
+
HOOKS_SHEBANG = "#!/usr/bin/env sh\n"
is_win_without_bash = is_win and not shutil.which("bash.exe")
@@ -943,3 +945,12 @@ class TestIndex(TestBase):
assert str(err)
else:
raise AssertionError("Should have caught a HookExecutionError")
+
+ @with_rw_repo('HEAD')
+ def test_index_add_pathlike(self, rw_repo):
+ git_dir = Path(rw_repo.git_dir)
+
+ file = git_dir / "file.txt"
+ file.touch()
+
+ rw_repo.index.add(file) \ No newline at end of file