“ แพ็คอัปโหลด: ไม่ใช่การอ้างอิงของเรา” หมายถึงอะไรเมื่อเรียก git refs ผ่าน --tags?


10

ในหนึ่งในโปรเจ็กต์ของฉัน Travis builds ล้มเหลวก่อนที่ระบบ build หรือโค้ดของฉันสามารถเข้าถึงได้ทันทีที่ build-script ของฉันพยายามดึงแท็ก Git ทั้งหมดด้วย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บน repo เดียวกันนั้นทำงานบน macOS Travis-workers บนเครื่อง macOS ของฉันและในกล่อง Ubuntu Vagrant ที่ฉันใช้เพื่อแก้ไขปัญหานี้

ข้อผิดพลาด "ร้ายแรง: ข้อผิดพลาดรีโมต: upload-pack: ไม่ใช่การอ้างอิงของเรา" มีความหมายว่าอะไร และฉันจะแก้ไขได้อย่างไร ฉันไม่แน่ใจด้วยซ้ำว่าจะเริ่มแก้ไขข้อผิดพลาดนี้ได้ที่ไหนเพราะจะเกิดขึ้นเฉพาะกับพนักงานของเทรวิสเท่านั้น

(มันไม่น่าจะมีประโยชน์ แต่นี่เป็นข้อผิดพลาดในบริบทและพื้นที่เก็บข้อมูลที่เป็นปัญหา )

แก้ไข 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

... กำลังถูกเรียกโดยอัตโนมัติเมื่อ submodule เมื่อฉันgit fetchอยู่ใน repo หลัก (อีกครั้งการกระทำนั้น0f509703ไม่มีอยู่ใน repo อย่างใดอย่างหนึ่งอีกครั้ง repo ที่เหมือนกันการกระทำแบบเดียวกันและสิ่งนี้ไม่ได้เกิดขึ้นใน macOS - บนเครื่อง Linux ของ Travis เท่านั้น)

คำตอบ:


2

นี่คือความสับสนโดยเฉพาะอย่างยิ่งเนื่องจากทั้ง repo bs-sedlex หลักและ git-submodule ppx-sedlex มีความมุ่งมั่นเริ่มต้นเช่น 0f5097 ... ;

แต่พวกเขาอาจมีแท็กพร้อมกับ SHA1 นั้น (ซึ่งครั้งหนึ่งเคยถูกปฏิเสธจะชี้ไปที่การคอมมิชชัน)

ข้อผิดพลาด "ร้ายแรง: ข้อผิดพลาดรีโมต: upload-pack: ไม่ใช่การอ้างอิงของเรา" มีความหมายว่าอะไร

ดู "การโคลน repo ที่มี submodules ที่ซ้อนกันไม่ทำงาน "

Git มีตัวเลือกสามตัวเลือกซึ่งควบคุมว่าคุณจะสามารถดึง ID ของวัตถุที่ต้องการได้หรือไม่

  • สิ่งหนึ่งที่ช่วยให้สามารถดึงข้อมูลวัตถุใด ๆ ที่ Git สามารถเข้าถึงได้
  • สิ่งที่ยอมให้ดึงวัตถุใด ๆ ที่สามารถเข้าถึงได้จากการอ้างอิง
  • และอีกอันที่อนุญาตให้ดึงวัตถุที่สามารถเข้าถึงได้จากการอ้างอิงที่ซ่อนอยู่

ข้อความ "ไม่ใช่การอ้างอิงของเรา" หมายความว่าคุณกำลังพยายามดึงวัตถุด้วย ID วัตถุซึ่งใช้สำหรับการส่งข้อมูลย่อย แต่เซิร์ฟเวอร์ไม่อนุญาต

ในกรณีของคุณอาจเป็นไปได้ว่า:

  • ทั้งแท็กใน submodule ไม่เคยผลัก
  • หรือ (เนื่องจากทำงานจากแหล่งอื่น ๆ ) Travis-CI ไม่สามารถเข้าถึง submodule (การพึ่งพาส่วนตัว ): ดู " Git - Submodules ใน Travis CI "
    หรือมีบางรุ่นของแคช submodule นั้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.