summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git/repo/base.py2
-rw-r--r--test/test_repo.py14
2 files changed, 15 insertions, 1 deletions
diff --git a/git/repo/base.py b/git/repo/base.py
index 2579a7d7..69e3e313 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -639,7 +639,7 @@ class Repo(object):
if not submodules:
default_args.append('--ignore-submodules')
if path:
- default_args.append(path)
+ default_args.extend(["--", path])
if index:
# diff index against HEAD
if osp.isfile(self.index.path) and \
diff --git a/test/test_repo.py b/test/test_repo.py
index 0809175f..d5ea8664 100644
--- a/test/test_repo.py
+++ b/test/test_repo.py
@@ -357,6 +357,20 @@ class TestRepo(TestBase):
assert self.rorepo.is_dirty() is False
self.rorepo._bare = orig_val
+ def test_is_dirty_pathspec(self):
+ self.rorepo._bare = False
+ for index in (0, 1):
+ for working_tree in (0, 1):
+ for untracked_files in (0, 1):
+ assert self.rorepo.is_dirty(index, working_tree, untracked_files, path=':!foo') in (True, False)
+ # END untracked files
+ # END working tree
+ # END index
+ orig_val = self.rorepo._bare
+ self.rorepo._bare = True
+ assert self.rorepo.is_dirty() is False
+ self.rorepo._bare = orig_val
+
@with_rw_repo('HEAD')
def test_is_dirty_with_path(self, rwrepo):
assert rwrepo.is_dirty(path="git") is False