Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#1,217 2 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
git, python
Domínio
tooling

Direção de pesquisa

Comece em pygit2/repository.py, em torno da implementação de checkout, e reproduza o exemplo de commit-hash fornecido. Compare como o binding Python resolve o argumento com o comportamento esperado de git checkout; está concluído quando o commit hash mostrado é aceito por repo.checkout sem InvalidSpecError.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.

Linguagem predominante
Python
Estrelas
1.7k
Forks
408
Merge médio
2d 57min
PRs com merge (30d)
7

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de libgit2/pygit2

Todas as issues de libgit2/pygit2

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.