diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 32391876..385ac83b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,12 @@ +v1.14.1 +======= + +* fix #109: when detecting a dirty git workdir + don't consider untracked file + (this was a regression due to #86 in v1.13.1) +* consider the distance 0 when the git node is unknown + (happens when you haven't commited anything) + v1.14.0 ======= diff --git a/setuptools_scm/git.py b/setuptools_scm/git.py index 10280e50..aa326f36 100644 --- a/setuptools_scm/git.py +++ b/setuptools_scm/git.py @@ -30,7 +30,7 @@ def from_potential_worktree(cls, wd): return cls(real_wd) def is_dirty(self): - out, _, _ = self.do_ex("git status --porcelain") + out, _, _ = self.do_ex("git status --porcelain --untracked-files=no") return bool(out) def node(self): @@ -50,7 +50,7 @@ def parse(root, describe_command=DEFAULT_DESCRIBE): dirty = wd.is_dirty() if rev_node is None: - return meta('0.0', dirty=dirty) + return meta('0.0', distance=0, dirty=dirty) out, err, ret = do_ex(describe_command, root) if ret: diff --git a/testing/test_git.py b/testing/test_git.py index c3ae002d..7179a574 100644 --- a/testing/test_git.py +++ b/testing/test_git.py @@ -14,7 +14,7 @@ def wd(wd): def test_version_from_git(wd): - assert wd.version == '0.0' + assert wd.version == '0.1.dev0' wd.commit_testfile() assert wd.version.startswith('0.1.dev1+') @@ -34,8 +34,12 @@ def test_version_from_git(wd): @pytest.mark.issue(108) +@pytest.mark.issue(109) def test_git_worktree(wd): wd.write('test.txt', 'test2') + # untracked files dont change the state + assert wd.version == '0.1.dev0' + wd('git add test.txt') assert wd.version.startswith('0.1.dev0+d')