O que significa "upload-pack: not our ref", ao buscar git refs via --tags?

10

Em um de meus projetos, as compilações do Travis estão falhando antes que qualquer código ou sistema de compilação possa ser alcançado, assim que meu script de compilação tenta buscar todas as tags Git com git fetch --tags:

`` git fetch --tags --verbose
POST git-upload-pack (350 bytes)
POST git-upload-pack (788 bytes)
POST git-upload-pack (797 bytes)
From https://github.com/ELLIOTTCABLE/bs-sedlex
 = [up to date]      fix-ci        -> origin/fix-ci
 * [new tag]         sedlex-1.99.2 -> sedlex-1.99.2
 * [new tag]         v1.99.3       -> v1.99.3
...
 * [new tag]         v20.0.0-pre.2 -> v20.0.0-pre.2
Fetching submodule ppx-sedlex
POST git-upload-pack (122 bytes)
From https://github.com/ELLIOTTCABLE/ppx-sedlex
 = [up to date]      develop       -> origin/develop
 = [up to date]      master        -> origin/master
...
 = [up to date]      v20.0.0-pre.2 -> v20.0.0-pre.2
POST git-upload-pack (4 bytes)
POST git-upload-pack (69 bytes)
POST git-upload-pack (586 bytes)
fatal: remote error: upload-pack: not our ref 0f509703fcd43ff4324d721a39220153bab49d4a

Isso é especialmente confuso, pois nem o repositório principal bs-sedlexnem o submódulo git ppx-sedlextêm qualquer commit inicial semelhante 0f5097...; Não tenho ideia de onde esse SHA é proveniente. Essa falha está ocorrendo apenas nos funcionários do Linux , e não consigo descobrir por que - git fetch --tagsnesse mesmo repositório funciona nos trabalhadores do macOS Travis, na minha máquina do macOS e em uma caixa do Ubuntu Vagrant que eu apontei para depurar isso.

O que significa o erro "fatal: erro remoto: upload-pack: not our ref"; e como posso contornar isso? Não sei nem por onde começar a depurar esse erro, pois ele ocorre apenas especificamente nos trabalhadores do Travis.

(É improvável que seja útil, mas aqui está o erro de contexto e o repositório em questão .)

Edit 1: Aqui estão alguns resultados interessantes adicionais, adicionando GIT_TRACE = 2:

Fetching submodule ppx-sedlex
23:55:28.125076 git.c:439               trace: built-in: git fetch --no-prune --no-prune-tags --tags -v --recurse-submodules-default on-demand --submodule-prefix ppx-sedlex/
23:55:28.125914 run-command.c:663       trace: run_command: git-remote-https origin https://github.com/ELLIOTTCABLE/ppx-sedlex.git
23:55:28.429609 run-command.c:663       trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs
23:55:28.432485 run-command.c:663       trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs
23:55:28.434082 git.c:439               trace: built-in: git rev-list --objects --stdin --not --all --quiet --alternate-refs
From https://github.com/ELLIOTTCABLE/ppx-sedlex
 = [up to date]      develop       -> origin/develop
 = [up to date]      master        -> origin/master
 = [up to date]      v1.99.4       -> v1.99.4
 = [up to date]      v1.99.4-pre.1 -> v1.99.4-pre.1
 = [up to date]      v1.99.4-pre.3 -> v1.99.4-pre.3
 = [up to date]      v1.99.4-pre.8 -> v1.99.4-pre.8
 = [up to date]      v2.0.0        -> v2.0.0
 = [up to date]      v20.0.0-pre.1 -> v20.0.0-pre.1
 = [up to date]      v20.0.0-pre.2 -> v20.0.0-pre.2
23:55:28.442482 run-command.c:1616      run_processes_parallel: preparing to run up to 1 tasks
23:55:28.442504 run-command.c:1648      run_processes_parallel: done
23:55:28.442536 run-command.c:663       trace: run_command: git gc --auto
23:55:28.443983 git.c:439               trace: built-in: git gc --auto
23:55:28.444903 run-command.c:663       trace: run_command: cd /home/vagrant/ELLIOTTCABLE/bs-sedlex/.git/modules/ppx-sedlex; unset GIT_PREFIX; GIT_DIR=. git fetch --no-prune --no-prune-tags --tags -v --recurse-submodules-default on-demand --submodule-prefix ppx-sedlex/ origin 0f509703fcd43ff4324d721a39220153bab49d4a
23:55:28.446392 git.c:439               trace: built-in: git fetch --no-prune --no-prune-tags --tags -v --recurse-submodules-default on-demand --submodule-prefix ppx-sedlex/ origin 0f509703fcd43ff4324d721a39220153bab49d4a
23:55:28.447105 run-command.c:663       trace: run_command: git-remote-https origin https://github.com/ELLIOTTCABLE/ppx-sedlex.git
23:55:28.735871 run-command.c:663       trace: run_command: git fetch-pack --stateless-rpc --stdin --lock-pack --thin --no-progress https://github.com/ELLIOTTCABLE/ppx-sedlex.git/
23:55:28.738885 git.c:439               trace: built-in: git fetch-pack --stateless-rpc --stdin --lock-pack --thin --no-progress https://github.com/ELLIOTTCABLE/ppx-sedlex.git/
error: Server does not allow request for unadvertised object 0f509703fcd43ff4324d721a39220153bab49d4a

Não consigo esconder por que o Git está solicitando um "objeto não anunciado" aqui; mas claramente não é um problema do GitHub, aqui - por algum motivo, o comando:

git fetch --no-prune --no-prune-tags --tags -v \
   --recurse-submodules-default on-demand \ 
   --submodule-prefix ppx-sedlex/ \
   origin 0f509703fcd43ff4324d721a39220153bab49d4a

... está sendo invocado automaticamente no submódulo, quando eu git fetchno repositório pai. (Novamente, esse commit 0f509703,, não existe em nenhum repositório; novamente, exatamente o mesmo repositório, exatamente o mesmo commit e isso não está acontecendo no macOS - apenas nas máquinas Linux do Travis.)

ELLIOTTCABLE
fonte

Respostas:

2

Isso é especialmente confuso, pois nem o repositório principal bs-sedlex nem o submódulo git ppx-sedlex têm qualquer commit iniciado como 0f5097 ...;

Mas eles podem ter uma tag com esse SHA1 (que, uma vez desreferenciado, apontaria para um commit)

O que significa o erro "fatal: erro remoto: upload-pack: not our ref";

Consulte "A clonagem de um repositório com submódulos aninhados não funciona "

O Git fornece três opções que controlam se você pode buscar um ID de objeto arbitrário:

  • um que permite buscar qualquer objeto arbitrário ao qual o Git tenha acesso,
  • um que permite buscar qualquer objeto acessível a partir de uma referência,
  • e um que adicionalmente permite buscar objetos acessíveis a partir de referências ocultas.

A mensagem "not our ref" significa que você está tentando buscar um objeto pelo ID do objeto, que é usado para submódulos, mas o servidor não permite.

No seu caso, é possível que:

VonC
fonte