Repository.resolve_refish can return a Tag, violates docstring and typehint
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 55/100
Rechercherichtung
Beginne am Einstiegspunkt Repository.resolve_refish und untersuche, wie symbolische Referenzen und direkte Objekt-IDs aufgelöst werden. Suche nach vorhandenen Tests für Commit-, Tag- und ref-Ziele und bestätige anschließend mit den Maintainer:innen den vorgesehenen Rückgabevertrag. Erledigt ist die Aufgabe, wenn das dokumentierte und typisierte Verhalten mit dem verifizierten Verhalten übereinstimmt und eine Regressionstestabdeckung für die beiden Beispiele vorhanden ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- Python
- Sterne
- 1.7k
- Forks
- 408
- Ø Merge
- 1 T. 15 Std.
- Gemergte PRs (30 T.)
- 7
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus libgit2/pygit2
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
-
Feature Request: Support app-level temporary config overrides using libgit2's backend supprtEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
-
merge_bases not wrappedOffen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
Ähnliche Issues
-
bug needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
debpalash/VoiceStudio#2624 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
SQLGlot translates Spark concat_ws on an array into array stringificationEvtl. vergeben @ansh-rohilla hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag
-
Make Catch2 optional when `RDK_BUILD_CPP_TESTS=OFF`Evtl. vergeben @pechersky hat das heute übernommen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 2 Tagen