--tags를 통해 git ref를 가져올 때“upload-pack : not our ref”는 무엇을 의미합니까?


10

내 프로젝트 중 하나에서 빌드 스크립트가 다음을 사용하여 모든 Git 태그를 가져 오려고하면 빌드 시스템 또는 코드에 도달하기 전에 Travis 빌드가 실패합니다 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

메인 repo bs-sedlex나 git-submodule ppx-sedlex이 커밋을 시작 하지 않기 때문에 이것은 특히 혼란 스럽습니다 0f5097.... 그 SHA가 어디에서 왔는지 전혀 모른다. 이 실패는 Linux 작업자 에서만 발생 하며 이유는 알 수 없습니다. git fetch --tags같은 리포지토리에서 macOS Travis 작업자, macOS 컴퓨터 및 Ubuntu Vagrant 상자에서이 문제를 해결하기 위해 회전했습니다.

"치명적인 : 원격 오류 : upload-pack : not our ref"오류는 무엇을 의미합니까? 어떻게 해결할 수 있습니까? 이 오류는 Travis 작업자에게만 발생하기 때문에이 오류의 디버깅을 시작할 위치조차 확실하지 않습니다.

(이것은 도움이되지는 않지만 컨텍스트오류해당 저장소가 있습니다.)

편집 1 : 다음은 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

나는 Git이 왜 "unvertverted object"를 요청하는지 숨길 수 없다. 그러나 이것은 GitHub 문제가 아닙니다. 어떤 이유로 든 명령은 다음과 같습니다.

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

... git fetch부모 저장소에 있을 때 하위 모듈에서 자동으로 호출됩니다 . (이 커밋 0f509703은 어느 리포지토리에도 존재하지 않습니다. 다시 말하지만, 정확히 같은 리포지토리, 정확히 같은 커밋은 MacOS에서는 발생하지 않으며 Travis의 Linux 시스템에서만 발생합니다.)

답변:


2

주 리포지토리 bs-sedlex 나 git-submodule ppx-sedlex가 0f5097과 같은 커밋을 시작하지 않기 때문에 이것은 특히 혼란 스럽습니다.

그러나 SHA1에 태그 가있을 수 있습니다 (역 참조되면 커밋을 가리킴).

"치명적인 : 원격 오류 : upload-pack : not our ref"오류는 무엇을 의미합니까?

페이지의 " 중첩 된 서브 모듈이있는 REPO를 복제하는 것은 작동하지 않습니다 "

Git은 임의의 객체 ID를 가져올 수 있는지 여부를 제어하는 ​​세 가지 옵션을 제공합니다.

  • Git이 액세스 할 수있는 임의의 객체를 가져올 수있는 객체,
  • 참조에서 도달 할 수있는 객체를 가져올 수있는 것
  • 숨겨진 참조에서 도달 할 수있는 객체 가져 오기를 추가로 허용합니다.

"참조 없음"메시지는 하위 모듈에 사용되는 객체 ID로 객체를 가져 오려고하지만 서버에서 허용하지 않음을 의미합니다.

귀하의 경우 다음이 가능할 수 있습니다.

  • 하위 모듈의 태그가 푸시되지 않았습니다
  • 또는 (다른 소스에서 작업하고 있기 때문에) Travis-CI는 서브 모듈 ( 개인 의존성 )에 액세스 할 수 없습니다 : " Trivis CI의 Git- 서브 모듈 "을 참조하십시오 .
    또는 해당 서브 모듈의 캐시 버전이 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.