summaryrefslogtreecommitdiff
path: root/src/setuptools_scm/git.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/setuptools_scm/git.py')
-rw-r--r--src/setuptools_scm/git.py21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/setuptools_scm/git.py b/src/setuptools_scm/git.py
index e8fa295..239ca37 100644
--- a/src/setuptools_scm/git.py
+++ b/src/setuptools_scm/git.py
@@ -220,14 +220,11 @@ def version_from_describe(
else:
describe_res = wd.default_describe()
- distance: int | None
- node: str | None
- if describe_res.returncode == 0:
- tag, distance, node, dirty = _git_parse_describe(describe_res.stdout)
- if distance == 0 and not dirty:
- distance = None
+ def parse_describe(output: str) -> ScmVersion:
+ tag, distance, node, dirty = _git_parse_describe(output)
return meta(tag=tag, distance=distance, dirty=dirty, node=node, config=config)
- return None
+
+ return _parse_success(describe_res, parse=parse_describe)
def _git_parse_inner(
@@ -247,14 +244,14 @@ def _git_parse_inner(
node = wd.node()
if node is None:
distance = 0
+ dirty = True
else:
distance = wd.count_all_nodes()
node = "g" + node
- dirty = wd.is_dirty()
+ dirty = wd.is_dirty()
version = meta(
tag=tag, distance=distance, dirty=dirty, node=node, config=config
)
-
branch = wd.get_branch()
node_date = wd.get_head_date() or date.today()
return dataclasses.replace(version, branch=branch, node_date=node_date)
@@ -262,7 +259,7 @@ def _git_parse_inner(
def _git_parse_describe(
describe_output: str,
-) -> tuple[str, int | None, str | None, bool]:
+) -> tuple[str, int, str | None, bool]:
# 'describe_output' looks e.g. like 'v1.5.0-0-g4060507' or
# 'v1.15.1rc1-37-g9bd1298-dirty'.
# It may also just be a bare tag name if this is a tagged commit and we are
@@ -277,7 +274,7 @@ def _git_parse_describe(
split = describe_output.rsplit("-", 2)
if len(split) < 3: # probably a tagged commit
tag = describe_output
- number = None
+ number = 0
node = None
else:
tag, number_, node = split
@@ -325,7 +322,7 @@ def archival_to_version(
return meta(
tag,
config=config,
- distance=None if number == 0 else number,
+ distance=number,
node=node,
)