--Tags aracılığıyla git refs getirilirken “upload-pack: ref bizim değil” ne anlama geliyor?


10

Projelerimden birinde, derleme betiğim tüm Git etiketlerinin tümünü getirmeye çalıştığında, derleme derleme sistemime veya koduma erişilmeden önce başarısız oluyor 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

Ne ana repo bs-sedlexne de git-submodule ppx-sedlexgibi başlayan herhangi bir taahhüt olmadığı için bu özellikle kafa karıştırıcıdır 0f5097...; SHA'nın nereden geldiğine dair hiçbir fikrim yok. Bu başarısızlık sadece Linux işçilerinde meydana geliyor ve nedenini anlayamıyorum - git fetch --tagsaynı repoda macOS Travis-işçilerinde, macOS makinemde ve bir Ubuntu Vagrant kutusunda bunun hatalarını ayıklamak için döndüm.

"Ölümcül: uzaktan hata: upload-pack: bizim referansımız değil" hatası ne anlama gelir; ve bunun etrafında nasıl çalışabilirim? Bu hata ayıklama işlemine nereden başlayacağından bile emin değilim, çünkü yalnızca Travis işçilerinde görülür.

(Yararlı olma olasılığı düşüktür, ancak işte bağlamdaki hata ve söz konusu depo .)

Düzenleme 1: GIT_TRACE = 2 eklemekten ek ilginç çıktılar:

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'in neden "reklamı yapılmayan bir nesne" istediğini gizleyemiyorum; ancak bu bir GitHub sorunu değil, burada - bazı nedenlerden dolayı komut:

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

... git fetchana depodayken alt modül üzerine otomatik olarak çağrılıyor . (Yine, bu taahhüt, 0f509703her iki repoda da mevcut değildir; yine, tam olarak aynı repo, tam olarak aynı taahhüt ve bu macOS'ta gerçekleşmiyor - sadece Travis'in Linux makinelerinde.)

Yanıtlar:


2

Ne ana repo bs-sedlex, ne de git-submodule ppx-sedlex'in 0f5097 gibi başlayan herhangi bir taahhüdü olmadığı için bu özellikle kafa karıştırıcıdır;

Ancak bu SHA1 ile bir etikete sahip olabilirler (bir kez silindikten sonra bir taahhüde işaret eder)

"Ölümcül: uzaktan hata: upload-pack: bizim referansımız değil" hatası ne anlama gelir;

Bkz. " İç içe yerleştirilmiş alt modüllerle bir kopyayı kopyalamak işe yaramıyor "

Git, rastgele bir nesne kimliği getirip getiremeyeceğinizi kontrol eden üç seçenek sunar:

  • Git'in erişebildiği herhangi bir keyfi nesneyi getirmeye izin veren bir nesne,
  • bir referanstan erişilebilen herhangi bir nesneyi getirmeye izin veren,
  • ve ek olarak gizli referanslardan erişilebilen nesneleri getirmeye izin verir.

"Bizim referansımız değil" mesajı, bir nesneyi alt modüller için kullanılan nesne kimliğiyle getirmeye çalıştığınız, ancak sunucunun buna izin vermediği anlamına gelir.

Sizin durumunuzda şunlar olabilir:

  • ya alt modüldeki etiket hiçbir zaman aktarılmadı
  • veya (diğer kaynaklardan çalıştığı için) Travis-CI'nin alt modüle erişimi yoktur ( özel bağımlılıklar ): bkz. " Git - Travis CI'deki Alt Modüller ".
    Ya da o alt modülün önbelleğe alınmış bazı sürümüne sahiptir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.