Gói tải lên của Viking là gì: không phải là ref của chúng tôi nghĩa là gì, khi tìm nạp git refs qua --tags?


10

Trong một trong các dự án của tôi, các bản dựng Travis bị lỗi trước khi có thể đạt được bất kỳ hệ thống hoặc mã xây dựng nào của tôi, ngay khi tập lệnh xây dựng của tôi cố gắng tìm nạp tất cả các thẻ Git bằng 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

Điều này đặc biệt khó hiểu, vì cả repo chính bs-sedlex, cũng không phải là mô đun con git ppx-sedlex, có bất kỳ cam kết nào bắt đầu như thế nào 0f5097...; Tôi không biết SHA đó đến từ đâu. Lỗi này chỉ xảy ra với các nhân viên Linux và tôi không thể hiểu tại sao - git fetch --tagstrên cùng một repo đó hoạt động trên macOS Travis-worker, trên máy macOS của tôi và trên hộp Ubuntu Vagrant tôi đã tìm ra để gỡ lỗi này.

Lỗi "gây tử vong: lỗi từ xa: upload-pack: không phải lỗi ref" của chúng tôi biểu thị điều gì; và làm thế nào tôi có thể làm việc xung quanh nó? Tôi thậm chí không chắc chắn bắt đầu sửa lỗi này ở đâu, vì nó chỉ xảy ra cụ thể trên các nhân viên của Travis.

(Điều này dường như không hữu ích, nhưng đây là lỗi trong ngữ cảnhkho lưu trữ được đề cập .)

Chỉnh sửa 1: Đây là một số đầu ra thú vị bổ sung, từ việc thêm 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

Tôi không thể che giấu lý do tại sao Git lại yêu cầu một "đối tượng không được chuyển đổi" ở đây; nhưng rõ ràng đây không phải là vấn đề của GitHub, ở đây - vì một số lý do, lệnh:

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

... Đang được gọi tự động theo mô hình con, khi tôi git fetchở trong repo cha. (Một lần nữa, cam kết đó, 0f509703không tồn tại trong cả repo; một lần nữa, cùng một repo, cùng một cam kết và điều này không xảy ra trên macOS - chỉ trên các máy Linux của Travis.)

Câu trả lời:


2

Điều này đặc biệt khó hiểu, vì cả repo bs-sedlex chính, cũng không phải ppx-sedlex của git-subodule, đều có bất kỳ cam kết nào bắt đầu như 0f5097 ...;

Nhưng họ có thể có một thẻ với SHA1 đó (mà sau khi được quy định lại sẽ chỉ ra một cam kết)

Lỗi "gây tử vong: lỗi từ xa: upload-pack: không phải lỗi ref" của chúng tôi biểu thị điều gì;

Xem " nhân bản một repo với các mô đun con lồng nhau không hoạt động "

Git cung cấp ba tùy chọn kiểm soát xem bạn có thể tìm nạp ID đối tượng tùy ý hay không:

  • một thứ cho phép tìm nạp bất kỳ đối tượng tùy ý nào mà Git có quyền truy cập vào,
  • một trong đó cho phép tìm nạp bất kỳ đối tượng nào có thể truy cập từ một tham chiếu,
  • và một trong đó cho phép tìm nạp các đối tượng có thể truy cập từ các tham chiếu ẩn.

Thông báo "không phải ref của chúng tôi" có nghĩa là bạn đang cố gắng tìm nạp một đối tượng bằng ID đối tượng, được sử dụng cho các mô hình con, nhưng máy chủ không cho phép nó.

Trong trường hợp của bạn, có thể là:

  • hoặc thẻ trong mô hình con không bao giờ được đẩy
  • hoặc (vì nó đang hoạt động từ các nguồn khác) Travis-CI không có quyền truy cập vào mô hình con ( phụ thuộc riêng ): xem " Git - Submodules trong Travis CI ".
    Hoặc nó có một số phiên bản lưu trữ của mô hình con đó.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.