-
-
Notifications
You must be signed in to change notification settings - Fork 403
Open
Description
The repository.resolve_refish function is meant to return a commit object as the first element of the tuple ( source ).
However, if given a SHA of an annotated tag, it returns a tag object instead, which causes problems downstream.
The SHA of the target commit is available under result.target (see below)
How to reproduce:
Execute the following (clone the pygit2 repo into a temporary dir, create an annotated tag):
import pygit2
from pathlib import Path
import tempfile
repo_dir = tempfile.TemporaryDirectory()
repo_path = Path(repo_dir.name)
repo = pygit2.clone_repository("https://github.com/libgit2/pygit2.git", repo_path)
head_sha = repo.head.peel().id
old = repo.create_tag(
'test_annotated_tag',
head_sha,
pygit2.GIT_OBJ_COMMIT,
pygit2.Signature('John Doe', 'jdoe@example.com', 12347, 0),
'message'
)
commit, ref = repo.resolve_refish(str(old))Then we can investigate the results:
In [2]: commit # not really a commit!
Out[2]: <pygit2.Object{tag:66986bf4eb1e47c3049f5a146609f0aa7b64757d}>
In [3]: commit.target
Out[3]: e2c0fdbfbd7f84374f8c7a3df256547b7ea99192
In [4]: head_sha
Out[4]: e2c0fdbfbd7f84374f8c7a3df256547b7ea99192Metadata
Metadata
Assignees
Labels
No labels