Skip to content

Commit a70d44b

Browse files
Merge pull request #772 from dlitz/for-upstream
Fix "not enough values to unpack" when parsing .git_archival.txt from a tagged commit; also fix #759
2 parents 5a87b76 + 0e4def7 commit a70d44b

File tree

5 files changed

+18
-6
lines changed

5 files changed

+18
-6
lines changed

.git_archival.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
node: $Format:%H$
22
node-date: $Format:%cI$
3-
describe-name: $Format:%(describe)$
3+
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
44
ref-names: $Format:%D$

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ and copy-paste this into it::
316316

317317
node: $Format:%H$
318318
node-date: $Format:%cI$
319-
describe-name: $Format:%(describe:tags=true)$
319+
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
320320
ref-names: $Format:%D$
321321

322322
Create the ``.gitattributes`` file in the root directory of your repository
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
node: $Format:%H$
22
node-date: $Format:%cI$
3-
describe-name: $Format:%(describe)$
3+
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
44
ref-names: $Format:%D$

src/setuptools_scm/git.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,18 +232,29 @@ def _git_parse_inner(
232232
)
233233

234234

235-
def _git_parse_describe(describe_output: str) -> tuple[str, int, str, bool]:
235+
def _git_parse_describe(
236+
describe_output: str,
237+
) -> tuple[str, int | None, str | None, bool]:
236238
# 'describe_output' looks e.g. like 'v1.5.0-0-g4060507' or
237239
# 'v1.15.1rc1-37-g9bd1298-dirty'.
240+
# It may also just be a bare tag name if this is a tagged commit and we are
241+
# parsing a .git_archival.txt file.
238242

239243
if describe_output.endswith("-dirty"):
240244
dirty = True
241245
describe_output = describe_output[:-6]
242246
else:
243247
dirty = False
244248

245-
tag, number, node = describe_output.rsplit("-", 2)
246-
return tag, int(number), node, dirty
249+
split = describe_output.rsplit("-", 2)
250+
if len(split) < 3: # probably a tagged commit
251+
tag = describe_output
252+
number = None
253+
node = None
254+
else:
255+
tag, number_, node = split
256+
number = int(number_)
257+
return tag, number, node, dirty
247258

248259

249260
def search_parent(dirname: _t.PathT) -> GitWorkdir | None:

testing/test_git.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,7 @@ def test_git_getdate_signed_commit(signed_commit_wd: WorkDir) -> None:
523523
("0.0", {"node": "0" * 20}),
524524
("1.2.2", {"describe-name": "release-1.2.2-0-g00000"}),
525525
("1.2.2.dev0", {"ref-names": "tag: release-1.2.2.dev"}),
526+
("1.2.2", {"describe-name": "v1.2.2"}),
526527
],
527528
)
528529
@pytest.mark.filterwarnings("ignore:git archive did not support describe output")

0 commit comments

Comments
 (0)