如何解决导致git子模块失败的环境变量
在使用简单脚本构建项目时,我在尝试检出子模块 (header {
width: 400px;
}
main {
margin-left: 900px;
}
) 时遇到了奇怪的失败
我从脚本中获取了一些环境变量,git submodule update --init --recursive
env.sh
然后我使用以下脚本安装我的项目,export jobs=`grep -c processor /proc/cpuinfo`
export build_dir=...
export source_dir=...
export CC=...
export CXX=...
export FC=..
:
build.sh
此脚本因失败而退出
#!/bin/bash
source env.sh
function build() {
git clone <REPO_URL> .
git submodule update --init --recursive
mkdir bld
cd bld
cmake ${source_dir}
-DCMAKE_C_COMPILER=${CC} \
-DCMAKE_CXX_COMPILER=${CXX} \
-DCMAKE_Fortran_COMPILER=${FC} \
-DCMAKE_INSTALL_PREFIX=${install_dir} \
make -j${jobs}
make install
}
但是当我在终端中运行相同的子模块命令时它是成功的
解决方法
我发现问题在于 error: pathspec '4' did not match any file(s) known to git
中设置的 jobs
变量。如果在调用 env.sh
时设置了此环境变量,则该变量的值将附加到命令行。 git submodule
然后将该参数视为不存在的子模块的路径。
所以在任何回购中
git submodule
将失败(假设“4”不是到 repo 中子模块的有效路径)。
我在 Ubuntu 18.04 和 20.04 上使用 jobs=4 git submodule update --init --recursive
版本 2.17.1 时遇到了这个问题。它已在较新版本的 git 中得到修复。有人告诉我,这已从 2.27.0 版(2020 年 6 月发货)开始修复。
我的解决方案是将 git
变量的名称更新为不那么通用的名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。