Apa yang dimaksud dengan "unggah-paket: bukan referensi kami", ketika mengambil referensi git melalui --tags?

10

Di salah satu proyek saya, build Travis gagal sebelum salah satu sistem atau kode build saya dapat dijangkau, segera setelah skrip build saya mencoba mengambil semua tag Git dengan 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

Ini sangat membingungkan, karena baik repo utama bs-sedlex, maupun git-submodule ppx-sedlex, tidak memiliki komitmen mulai seperti 0f5097...; Saya tidak tahu dari mana SHA itu berasal. Kegagalan ini hanya terjadi pada pekerja Linux , dan saya tidak tahu mengapa - git fetch --tagspada repo yang sama bekerja pada macOS Travis-pekerja, pada mesin macOS saya, dan pada kotak Ubuntu Vagrant saya memutar untuk debug ini.

Apa yang dimaksud dengan kesalahan "fatal: remote: upload-pack: not ref" kami menandakan; dan bagaimana saya bisa mengatasinya? Saya bahkan tidak yakin di mana harus mulai men-debug kesalahan ini, karena hanya terjadi khusus pada pekerja Travis.

(Ini sepertinya tidak membantu, tapi ini kesalahan dalam konteks , dan repositori yang dimaksud .)

Sunting 1: Berikut ini beberapa output menarik tambahan, dari menambahkan 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

Saya tidak bisa menyembunyikan alasan mengapa Git meminta "objek yang tidak diiklankan" di sini; tapi ini jelas bukan masalah GitHub, di sini - untuk beberapa alasan, perintahnya:

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

... sedang dipanggil secara otomatis pada submodule, ketika saya git fetchdi repo induk. (Sekali lagi, komit itu,, 0f509703tidak ada di kedua repo; sekali lagi, repo yang sama persis, komit yang sama persis, dan ini tidak terjadi pada macOS - hanya pada mesin Linux Travis.)

DAPAT DILAKUKAN
sumber

Jawaban:

2

Ini sangat membingungkan, karena baik repo bs-sedlex utama, maupun gx-submodule ppx-sedlex, tidak memiliki komitmen mulai seperti 0f5097 ...;

Tapi mereka mungkin memiliki tag dengan SHA1 itu (yang, setelah direferensikan, akan menunjukkan komit)

Apa yang dimaksud dengan kesalahan "fatal: remote: upload-pack: not ref" kami menandakan;

Lihat " kloning repo dengan submodula bersarang tidak berfungsi "

Git menyediakan tiga opsi yang mengontrol apakah Anda dapat mengambil ID objek yang berubah-ubah:

  • sesuatu yang memungkinkan mengambil objek sewenang-wenang yang dimiliki Git,
  • yang memungkinkan mengambil objek apa pun yang dapat dijangkau dari referensi,
  • dan yang juga memungkinkan mengambil objek yang bisa dijangkau dari referensi tersembunyi.

Pesan "not our ref" berarti Anda mencoba mengambil objek dengan ID objek, yang digunakan untuk submodul, tetapi server tidak mengizinkannya.

Dalam kasus Anda, adalah mungkin bahwa:

  • baik tag di submodule tidak pernah didorong
  • atau (karena bekerja dari sumber lain) Travis-CI tidak memiliki akses ke submodule ( dependensi pribadi ): lihat " Git - Submodules di Travis CI ".
    Atau memiliki beberapa versi yang di-cache dari submodule itu.
VONC
sumber