diff --git a/.git_archival.txt b/.git_archival.txt
index 37d637d..8fb235d 100644
--- a/.git_archival.txt
+++ b/.git_archival.txt
@@ -1,4 +1,4 @@
 node: $Format:%H$
 node-date: $Format:%cI$
-describe-name: $Format:%(describe)$
+describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
 ref-names: $Format:%D$
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index af10aef..9fe41b2 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -2,12 +2,12 @@ default_language_version:
   python: python3.9
 repos:
 -   repo: https://github.com/psf/black
-    rev: 22.6.0
+    rev: 22.10.0
     hooks:
     - id: black
       args: [--safe, --quiet]
 -   repo: https://github.com/asottile/reorder_python_imports
-    rev: v3.3.0
+    rev: v3.9.0
     hooks:
     -   id: reorder-python-imports
         args: [ "--application-directories=.:src" , --py37-plus, --add-import, 'from __future__ import annotations']
@@ -19,20 +19,21 @@ repos:
     -   id: check-yaml
     -   id: debug-statements
 -   repo: https://github.com/PyCQA/flake8
-    rev: 4.0.1
+    rev: 5.0.4
     hooks:
     -   id: flake8
 -   repo: https://github.com/asottile/pyupgrade
-    rev: v2.34.0
+    rev: v3.2.0
     hooks:
     - id: pyupgrade
       args: [--py37-plus]
 -   repo: https://github.com/asottile/setup-cfg-fmt
-    rev: v1.20.1
+    rev: v2.2.0
     hooks:
     -   id: setup-cfg-fmt
+        args: [ --include-version-classifiers  ]
 -   repo: https://github.com/pre-commit/mirrors-mypy
-    rev: 'v0.961'
+    rev: 'v0.982'
     hooks:
     -   id: mypy
         args: [--strict]
diff --git a/README.rst b/README.rst
index a02caf7..18f763c 100644
--- a/README.rst
+++ b/README.rst
@@ -316,7 +316,7 @@ and copy-paste this into it::
 
     node: $Format:%H$
     node-date: $Format:%cI$
-    describe-name: $Format:%(describe:tags=true)$
+    describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
     ref-names: $Format:%D$
 
 Create the ``.gitattributes`` file in the root directory of your repository
diff --git a/setup.cfg b/setup.cfg
index 06c51ea..795bb21 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -19,6 +19,7 @@ classifiers =
     Programming Language :: Python :: 3.8
     Programming Language :: Python :: 3.9
     Programming Language :: Python :: 3.10
+    Programming Language :: Python :: 3.11
     Topic :: Software Development :: Libraries
     Topic :: Software Development :: Version Control
     Topic :: System :: Software Distribution
diff --git a/src/setuptools_scm/.git_archival.txt b/src/setuptools_scm/.git_archival.txt
index 37d637d..8fb235d 100644
--- a/src/setuptools_scm/.git_archival.txt
+++ b/src/setuptools_scm/.git_archival.txt
@@ -1,4 +1,4 @@
 node: $Format:%H$
 node-date: $Format:%cI$
-describe-name: $Format:%(describe)$
+describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
 ref-names: $Format:%D$
diff --git a/src/setuptools_scm/git.py b/src/setuptools_scm/git.py
index 27cb159..16ca378 100644
--- a/src/setuptools_scm/git.py
+++ b/src/setuptools_scm/git.py
@@ -232,9 +232,13 @@ def _git_parse_inner(
     )
 
 
-def _git_parse_describe(describe_output: str) -> tuple[str, int, str, bool]:
+def _git_parse_describe(
+    describe_output: str,
+) -> tuple[str, int | None, 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
+    # parsing a .git_archival.txt file.
 
     if describe_output.endswith("-dirty"):
         dirty = True
@@ -242,8 +246,15 @@ def _git_parse_describe(describe_output: str) -> tuple[str, int, str, bool]:
     else:
         dirty = False
 
-    tag, number, node = describe_output.rsplit("-", 2)
-    return tag, int(number), node, dirty
+    split = describe_output.rsplit("-", 2)
+    if len(split) < 3:  # probably a tagged commit
+        tag = describe_output
+        number = None
+        node = None
+    else:
+        tag, number_, node = split
+        number = int(number_)
+    return tag, number, node, dirty
 
 
 def search_parent(dirname: _t.PathT) -> GitWorkdir | None:

diff --git a/testing/test_git.py b/testing/test_git.py
index 321d658..412ce75 100644
--- a/testing/test_git.py
+++ b/testing/test_git.py
@@ -523,6 +523,7 @@ def test_git_getdate_signed_commit(signed_commit_wd: WorkDir) -> None:
         ("0.0", {"node": "0" * 20}),
         ("1.2.2", {"describe-name": "release-1.2.2-0-g00000"}),
         ("1.2.2.dev0", {"ref-names": "tag: release-1.2.2.dev"}),
+        ("1.2.2", {"describe-name": "v1.2.2"}),
     ],
 )
 @pytest.mark.filterwarnings("ignore:git archive did not support describe output")

The suggested contents of `.git_archival.txt` do not include the `--match` flag (like the default git describe)
I noticed a small discrepancy between the default git describe in `setuptools_scm` and the suggested contents of `.git_archival.txt` - the first one uses `--match *[0-9]*` while the second doesn't even though both support it:
https://github.com/pypa/setuptools_scm/blob/e1283177b23ccf254739aa8292448154c54741c8/src/setuptools_scm/git.py#L42-L43

`%(describe:tags=true,match=*[0-9]*)` can be used to get an equivalent match in `.git_archival.txt`.

I also see that the `.git_archival.txt` in the root of the repository and in `src/setuptools/.git_archival.txt` both do not include the `:tags=true` part, I'm unsure if that's intentional but it doesn't seem like this repository uses annotated tags (or at least not since v6.3.1).
testing/test_git.py::test_git_archival_to_version[1.2.2-from_data5]
testing/test_git.py::test_parse_describe_output[3.3.1-rc26-0-g9df187b-3.3.1-rc26-0-g9df187b-False] testing/test_git.py::test_parse_describe_output[17.33.0-rc-17-g38c3047c0-17.33.0-rc-17-g38c3047c0-False] testing/test_git.py::test_root_relative_to testing/test_git.py::test_root_search_parent_directories testing/test_git.py::test_git_gone testing/test_git.py::test_file_finder_no_history testing/test_git.py::test_parse_call_order testing/test_git.py::test_version_from_git testing/test_git.py::test_git_version_unnormalized_setuptools[false] testing/test_git.py::test_git_version_unnormalized_setuptools[with_created_class] testing/test_git.py::test_git_version_unnormalized_setuptools[with_named_import] testing/test_git.py::test_unicode_version_scheme testing/test_git.py::test_git_worktree testing/test_git.py::test_git_dirty_notag[False] testing/test_git.py::test_git_dirty_notag[True] testing/test_git.py::test_git_parse_shallow_warns testing/test_git.py::test_git_parse_shallow_fail testing/test_git.py::test_git_shallow_autocorrect testing/test_git.py::test_find_files_stop_at_root_git testing/test_git.py::test_parse_no_worktree testing/test_git.py::test_alphanumeric_tags_match testing/test_git.py::test_git_archive_export_ignore testing/test_git.py::test_git_archive_subdirectory testing/test_git.py::test_git_archive_run_from_subdirectory testing/test_git.py::test_git_branch_names_correct testing/test_git.py::test_git_feature_branch_increments_major testing/test_git.py::test_not_matching_tags testing/test_git.py::test_non_dotted_version_with_updated_regex testing/test_git.py::test_non_dotted_tag_no_version_match testing/test_git.py::test_gitdir testing/test_git.py::test_git_getdate testing/test_git.py::test_git_getdate_badgit testing/test_git.py::test_git_archival_to_version[1.0-from_data0] testing/test_git.py::test_git_archival_to_version[1.1.dev3+g0000-from_data1] testing/test_git.py::test_git_archival_to_version[0.0-from_data2] testing/test_git.py::test_git_archival_to_version[1.2.2-from_data3] testing/test_git.py::test_git_archival_to_version[1.2.2.dev0-from_data4] testing/test_git.py::test_git_archival_node_missing_no_version testing/test_git.py::test_git_archival_from_unfiltered