pygit2 icon indicating copy to clipboard operation
pygit2 copied to clipboard

InvalidSpecError for `repo.checkout("rev")` when `git checkout rev` works fine

Open AdamWill opened this issue 2 years ago • 2 comments

To reproduce:

git clone https://src.fedoraproject.org/rpms/python-pymongo.git
cd python-pymongo
python3
>>> import pygit2
>>> pyrepo = pygit2.Repository("./")
>>> pyrepo.checkout("a3432e746082d0c96811cbf87aa7ae8e7fe62bc8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python3.11/site-packages/pygit2/repository.py", line 420, in checkout
    reference = self.lookup_reference(refname)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_pygit2.InvalidSpecError: a3432e746082d0c96811cbf87aa7ae8e7fe62bc8: the given reference name 'a3432e746082d0c96811cbf87aa7ae8e7fe62bc8' is not valid
>>> (ctrl-d)
[adamw@xps13a python-pymongo (rawhide)]$ git checkout a3432e746082d0c96811cbf87aa7ae8e7fe62bc8
Note: switching to 'a3432e746082d0c96811cbf87aa7ae8e7fe62bc8'.
[...]
HEAD is now at a3432e7 Update to 3.4.0 (#1400227).

so, checkout of that commit works fine with git checkout but not pygit2 checkout. I've no idea why not. Not sure if this is a pygit2 or libgit2 issue.

AdamWill avatar Jun 01 '23 22:06 AdamWill

This is with pygit2 1.12.0 and libgit2 1.6.4.

AdamWill avatar Jun 01 '23 22:06 AdamWill

faced the same issue. Resolved using refs, like "refs/heads/branch_name", not just "branch_name"

Aquarius888 avatar Jan 10 '25 20:01 Aquarius888