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

vc9ivgsu  于 12个月前  发布在  Git
关注(0)|答案(1)|浏览(171)

我呼吁的时候

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是子模块项目中的主分支)时,它在管道中也能正常工作。
你知道出什么事了吗?

irtuqstp

irtuqstp1#

在检出整个工作副本时,确保--single-branch选项未被设置。
Git也会将这个设置应用到你的子模块中。它只会 checkout 默认的分支(在你的例子中是master)。稍后,当你运行git submodule update切换到配置的branch = main时,它无法在本地找到它并失败。

GitHub操作

正如你提到的GitHub CI/CD。如果你使用actions/checkout action,运行fetch-depth: 0就足以确保它获取 * 所有 * 分支:

- uses: actions/checkout@v4
  with:
    fetch-depth: 0

字符串

相关问题