Repository.resolve_refish does not return a commit if given annotated tag SHA
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 1.7k
- Forks
- 408
- Merge medio
- 2 d 57 min
- PR fusionados (30 d)
- 7
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza en pygit2/repository.py, en la implementación de resolve_refish a la que se hace referencia en el issue. Reproduce el caso de un SHA de una etiqueta anotada con el script proporcionado y, después, sigue el objeto devuelto y su target. Se considera terminado cuando el primer elemento de la tupla es un objeto commit para este caso y el comportamiento existente se mantiene para las demás entradas refish.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- git, python
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 52/100