Repository.resolve_refish does not return a commit if given annotated tag SHA
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 52/100
Direção de pesquisa
Comece em pygit2/repository.py, na implementação de resolve_refish referenciada na issue. Reproduza o caso de um SHA de tag anotada com o script fornecido e, em seguida, rastreie o objeto retornado e seu target. Está concluído quando o primeiro elemento da tupla for um objeto commit para este caso e o comportamento existente permanecer intacto para outras entradas refish.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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]: e2c0fdbfbd7f84374f8c7a3df256547b7ea99192
- Linguagem predominante
- Python
- Estrelas
- 1.7k
- Forks
- 408
- Merge médio
- 2d 57min
- PRs com merge (30d)
- 7
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de libgit2/pygit2
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 48/100
-
merge_bases not wrapped Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
Todas as issues de libgit2/pygit2
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
stephrobert/dsoxlab#238 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
sublimehq/package_control#1780 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
nwg-piotr/nwg-displays#145 ·