Repository.resolve_refish can return a Tag, violates docstring and typehint
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 55/100
Piste de recherche
Commencez par le point d’entrée Repository.resolve_refish et examinez comment sont résolues les références symboliques et les identifiants d’objets directs. Recherchez les tests existants couvrant les cibles Commit, Tag et ref, puis confirmez le contrat de retour attendu avec les maintainers. La tâche est terminée lorsque le comportement documenté et typé correspond au comportement vérifié, avec une couverture de régression pour les deux exemples.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The typing hint and docstring of Repository.resolve_refish says it returns a Commit object. Actually, it will return a Tag object if given a tag's hex oid. Is this the expected behavior.
For example, in the Linux kernel:
assert pygit2.__version__ == "1.18.0"
# OID of `v6.12.1^{tag}` and v6.12.1^{commit}` in Linux kernel.
tag_oid = Oid(hex="a554dea023a451ad985c071f8aae6415f0e274df")
commit_oid = Oid(hex="d390303b28dabbb91b2d32016a4f72da478733b9")
# As documented, symbolic refs resolve to a commit object.
# But the ref target differs from the returned object. Is this the desired behavior?
obj, ref = repo.resolve_refish("v6.12.1")
assert isinstance(obj, Commit)
assert ref.target != obj.id
assert ref.target == tag_oid
# Contrary to the docstring and typing hint, this returns a Tag object.
obj, ref = repo.resolve_refish(str(tag_oid))
assert isinstance(obj, Tag)
assert ref is None
- Langage dominant
- Python
- Étoiles
- 1.7k
- Forks
- 408
- Merge moyen
- 2 j 57 min
- PR mergées (30 j)
- 7
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de libgit2/pygit2
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
Feature Request: Support app-level temporary config overrides using libgit2's backend supprt Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
-
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
-
merge_bases not wrapped Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
Toutes les issues de libgit2/pygit2
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
browser-use/browser-use#5905 ·
-
type: enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
ynput/ayon-python-api#363 ·
-
bug needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
modelscope/FunASR#3728 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
open-compass/opencompass#2655 ·