git 子模块更新不适用于分支子模块的 GitHub CI/CD 管道

问题描述 投票:0回答:1

当我打电话时

git submodule update --init --recursive --depth 50 --remote --jobs 1

对于具有名为

main
的分支的子模块,当我从本地 git bash 调用它时,效果很好,而当从 GitHub CI/CD 管道调用时,它会失败:

13:27:13.378819 git.c:455               trace: built-in: git rev-parse --verify origin/main
fatal: Needed a single revision
13:27:13.381233 git.c:742               trace: exec: git-sh-i18n--envsubst --variables 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
13:27:13.381277 run-command.c:668       trace: run_command: git-sh-i18n--envsubst --variables 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
13:27:13.384468 git.c:742               trace: exec: git-sh-i18n--envsubst 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
13:27:13.384504 run-command.c:668       trace: run_command: git-sh-i18n--envsubst 'Unable to find current ${remote_name}/${branch} revision in submodule path '\''$sm_path'\'''
fatal: Unable to find current origin/main revision in submodule path 'roles/trendmicro-ds-agent-branch'

这是我的 .gitmodules 文件:

[submodule "roles/trendmicro-ds-agent-branch"]
    path = roles/trendmicro-ds-agent-branch
    url = ../../modules/ansible/trendmicro-ds-agent
    branch = main

当我将 .gitmdoules 中的

branch = main
替换为
branch = master
(其中 master 是子模块项目中的主分支)时,它在管道中也能正常工作。

知道这里出了什么问题吗?

git github github-actions git-branch git-submodules
1个回答
0
投票

确保在签出整个工作副本时

--single-branch
选项未设置

Git 还会将此设置应用于您的子模块。它只会检查默认分支(在您的情况下是

master
)。稍后,当您运行
git submodule update
切换到配置的
branch = main
时,它无法在本地找到它并失败。

GitHub 操作

正如您提到的 GitHub CI/CD。如果您使用

actions/checkout

 操作
,则只需使用 fetch-depth: 0
 运行即可确保它获取
所有分支:

- uses: actions/checkout@v4 with: fetch-depth: 0
    
© www.soinside.com 2019 - 2024. All rights reserved.