--tagsを介してgit refをフェッチする場合、「upload-pack:not our ref」とはどういう意味ですか?


10

私のプロジェクトの1つで、ビルドスクリプトがすべての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

メインのリポジトリbs-sedlexもgit-submodule ppx-sedlexものようにコミットを開始しないため、これは特に混乱し0f5097...ます。そのSHAがどこから来ているのか私にはわかりません。この失敗はLinuxワーカーでのみ発生しており、その理由がわかりません。git fetch --tags同じレポジトリがmacOS Travis-workers、macOSマシン、およびUbuntu Vagrantボックスで機能し、これをデバッグするために起動しました。

「致命的:リモートエラー:アップロードパック:参照ではありません」というエラーは何を示していますか。そして、どうすればそれを回避できますか?このエラーは特に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が「非対象オブジェクト」を要求している理由を隠すことはできません。ただし、ここでは明らかに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 を持つタグを持っているかもしれません(これは、逆参照されると、コミットを指します)

「致命的:リモートエラー:アップロードパック:参照ではありません」というエラーは何を示していますか。

詳細は、「ネストされたサブモジュールでレポのクローンを作成することはできません

Gitには、任意のオブジェクトIDをフェッチできるかどうかを制御する3つのオプションがあります。

  • Gitがアクセスできる任意のオブジェクトをフェッチできるもの、
  • 参照から到達可能な任意のオブジェクトをフェッチできるもの、
  • さらに、非表示の参照から到達可能なオブジェクトをフェッチできるようにします。

「not our ref」メッセージは、サブモジュールに使用されるオブジェクトIDでオブジェクトをフェッチしようとしているが、サーバーがそれを許可していないことを意味します。

あなたの場合、可能性があります:

  • サブモジュールのタグがプッシュされたことがないか
  • または(他のソースから機能しているため)Travis-CIはサブモジュール(プライベート依存関係)にアクセスできません。「Git-Travis CIのサブモジュール」を参照してください。
    または、そのサブモジュールのキャッシュされたバージョンがあります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.