Leo*_*ica 7 git git-submodules
我们只在 CI 上看到一个奇怪的错误。我们有一个 git 存储库(我们称之为“OUTER”),其中包含一个子模块(“INNER”)。如果我们在开发机器上正常克隆“OUTER”并更新子模块,我们不会发现任何问题。在 CI 上,Bitrise 以奇怪的方式“克隆”存储库后,git fetch在尝试获取子模块时调用会抛出错误。
这是一个示例输出。请注意,前几行模拟 Bitrise 如何“克隆”存储库。
\n\xe2\x9e\x9c test git "init"\ngit "remote" "add" "origin" "git@github.com:COMPANY/OUTER.git"\ngit "fetch" "--jobs=10" "--no-tags" "origin" "refs/heads/master"\ngit "checkout" "master"\ngit "merge" "origin/master"\ngit "submodule" "update" "--init" "--recursive" "--jobs=10"\n\nhint: Using \'master\' as the name for the initial branch. This default branch name\nhint: is subject to change. To configure the initial branch name to use in all\nhint: of your new repositories, which will suppress this warning, call:\nhint: \nhint: git config --global init.defaultBranch <name>\nhint: \nhint: Names commonly chosen instead of \'master\' are \'main\', \'trunk\' and\nhint: \'development\'. The just-created branch can be renamed via this command:\nhint: \nhint: git branch -m <name>\nInitialized empty Git repository in /Users/lnatan/Desktop/test/.git/\nremote: Enumerating objects: 48542, done.\nremote: Counting objects: 100% (4094/4094), done.\nremote: Compressing objects: 100% (989/989), done.\nremote: Total 48542 (delta 3383), reused 3623 (delta 3082), pack-reused 44448\nReceiving objects: 100% (48542/48542), 178.80 MiB | 5.71 MiB/s, done.\nResolving deltas: 100% (35468/35468), done.\nFrom github.com:COMPANY/OUTER\n * branch master -> FETCH_HEAD\n * [new branch] master -> origin/master\nBranch \'master\' set up to track remote branch \'master\' from \'origin\'.\nAlready on \'master\'\nAlready up to date.\nSubmodule \'Submodules/INNER\' (git@github.com:COMPANY/INNER.git) registered for path \'Submodules/INNER\'\nCloning into \'/Users/lnatan/Desktop/test/Submodules/INNER\'...\nSubmodule path \'Submodules/INNER\': checked out \'174a9f60014e3cead89242178c534aeaff769dc7\'\n\xe2\x9e\x9c test git:(master) \n\xe2\x9e\x9c test git:(master) \n\xe2\x9e\x9c test git:(master) \n\xe2\x9e\x9c test git:(master) git fetch\nremote: Enumerating objects: 9001, done.\nremote: Counting objects: 100% (4953/4953), done.\nremote: Compressing objects: 100% (2833/2833), done.\nremote: Total 4461 (delta 3443), reused 2361 (delta 1527), pack-reused 0\nReceiving objects: 100% (4461/4461), 6.16 MiB | 3.41 MiB/s, done.\nResolving deltas: 100% (3443/3443), completed with 399 local objects.\nFrom github.com:COMPANY/OUTER\n = [up to date] master -> origin/master\n * [new branch] ...\n * [new tag] ...\nFetching submodule Submodules/INNER\nfatal: remote error: upload-pack: not our ref 57df880c914a482c26a1db9b388a34ee55e22730\nErrors during submodule fetch:\n Submodules/INNER\nRun Code Online (Sandbox Code Playgroud)\n使用GIT_TRACE=2和--verbose产生以下输出:
\xe2\x9e\x9c test git:(master) GIT_TRACE=2 git fetch --tags --verbose\n02:04:41.644506 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/bin/git\n02:04:41.644795 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/bin\n02:04:41.645153 git.c:455 trace: built-in: git fetch --tags --verbose\n02:04:41.645516 run-command.c:667 trace: run_command: unset GIT_PREFIX; GIT_PROTOCOL=version=2 ssh -o SendEnv=GIT_PROTOCOL git@github.com \'git-upload-pack \'\\\'\'COMPANY/OUTER.git\'\\\'\'\'\nremote: Enumerating objects: 9300, done.\nremote: Counting objects: 100% (5243/5243), done.\nremote: Compressing objects: 100% (3091/3091), done.\n02:04:48.411851 run-command.c:667 trace: run_command: git index-pack --stdin -v --fix-thin \'--keep=fetch-pack 30246 on Leo-Natans-Inv-MBP.local\' --pack_header=2,4750\n02:04:48.417901 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git\n02:04:48.418587 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core\n02:04:48.419008 git.c:455 trace: built-in: git index-pack --stdin -v --fix-thin \'--keep=fetch-pack 30246 on Leo-Natans-Inv-MBP.local\' --pack_header=2,4750\nremote: Total 4750 (delta 3673), reused 2442 (delta 1552), pack-reused 0\nReceiving objects: 100% (4750/4750), 6.22 MiB | 3.51 MiB/s, done.\nResolving deltas: 100% (3673/3673), completed with 400 local objects.\n02:04:50.742376 run-command.c:667 trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs\n02:04:50.747795 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git\n02:04:50.748441 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core\n02:04:50.748944 git.c:455 trace: built-in: git rev-list --objects --stdin --not --all --quiet --alternate-refs\nFrom github.com:COMPANY/OUTER\n = [up to date] master -> origin/master\n * [new branch] ...\n * [new tag] ...\n02:04:51.133204 run-command.c:1628 run_processes_parallel: preparing to run up to 1 tasks\n02:04:51.133359 run-command.c:667 trace: run_command: cd /Users/lnatan/Desktop/test/.git/modules/Submodules/INNER; unset GIT_PREFIX; GIT_DIR=. git fetch --no-prune --no-prune-tags --tags -v --recurse-submodules-default on-demand --submodule-prefix Submodules/INNER/\nFetching submodule Submodules/INNER\n02:04:51.135930 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git\n02:04:51.136231 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core\n02:04:51.136416 git.c:455 trace: built-in: git fetch --no-prune --no-prune-tags --tags -v --recurse-submodules-default on-demand --submodule-prefix Submodules/INNER/\n02:04:51.136872 run-command.c:667 trace: run_command: unset GIT_DIR GIT_PREFIX; GIT_PROTOCOL=version=2 ssh -o SendEnv=GIT_PROTOCOL git@github.com \'git-upload-pack \'\\\'\'COMPANY/INNER.git\'\\\'\'\'\n02:04:55.589678 run-command.c:667 trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs\n02:04:55.600024 run-command.c:667 trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs\n02:04:55.603178 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git\n02:04:55.603586 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core\n02:04:55.603916 git.c:455 trace: built-in: git rev-list --objects --stdin --not --all --quiet --alternate-refs\nFrom github.com:COMPANY/INNER\n = [up to date] ...\n02:04:55.938232 run-command.c:1628 run_processes_parallel: preparing to run up to 1 tasks\n02:04:55.938375 run-command.c:1660 run_processes_parallel: done\n02:04:55.938496 run-command.c:667 trace: run_command: git maintenance run --auto --no-quiet\n02:04:55.946682 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git\n02:04:55.947423 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core\n02:04:55.948094 git.c:455 trace: built-in: git maintenance run --auto --no-quiet\n02:04:55.951412 run-command.c:667 trace: run_command: cd /Users/lnatan/Desktop/test/.git/modules/Submodules/INNER; unset GIT_PREFIX; GIT_DIR=. git fetch --no-prune --no-prune-tags --tags -v --recurse-submodules-default on-demand --submodule-prefix Submodules/INNER/ origin 57df880c914a482c26a1db9b388a34ee55e22730\n02:04:55.956634 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git\n02:04:55.957121 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core\n02:04:55.957479 git.c:455 trace: built-in: git fetch --no-prune --no-prune-tags --tags -v --recurse-submodules-default on-demand --submodule-prefix Submodules/INNER/ origin 57df880c914a482c26a1db9b388a34ee55e22730\n02:04:55.958394 run-command.c:667 trace: run_command: unset GIT_DIR GIT_PREFIX; GIT_PROTOCOL=version=2 ssh -o SendEnv=GIT_PROTOCOL git@github.com \'git-upload-pack \'\\\'\'COMPANY/INNER.git\'\\\'\'\'\nfatal: remote error: upload-pack: not our ref 57df880c914a482c26a1db9b388a34ee55e22730\n02:05:00.643367 run-command.c:1660 run_processes_parallel: done\nErrors during submodule fetch:\n Submodules/INNER\n02:05:00.644990 run-command.c:667 trace: run_command: git maintenance run --auto --no-quiet\n02:05:00.652674 exec-cmd.c:139 trace: resolved executable path from Darwin stack: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git\n02:05:00.653655 exec-cmd.c:238 trace: resolved executable dir: /Applications/Xcode.app/Contents/Developer/usr/libexec/git-core\n02:05:00.654379 git.c:455 trace: built-in: git maintenance run --auto --no-quiet\nRun Code Online (Sandbox Code Playgroud)\n我不知道从哪里来57df880c914a482c26a1db9b388a34ee55e22730。我在任何地方都找不到任何关于它的参考,但我可能不知道去哪里找。有什么帮助吗?
谢谢
\n57df880c914a482c26a1db9b388a34ee55e22730来自超级项目(引用子模块的存储库)中的提交。您的git fetch操作正在“递归”模式下运行,它尝试使用超级项目中的指令git fetch在每个子模块中运行。不幸的是,超级项目中的指令要么完全错误,要么远程(子模块最初克隆的位置)上的Git 软件无法理解。
正如您在自己的评论中指出的那样,git fetch --no-recurse-submodules避免尝试运行该特定提交的递归获取。您还可以默认配置递归关闭,使用git config fetch.recurseSubmodules false. 将其设置为on-demand此处可能有效也可能无效。
| 归档时间: |
|
| 查看次数: |
8443 次 |
| 最近记录: |