【发布时间】:2021-01-06 18:56:55
【问题描述】:
我在我的项目中使用了一些 git 子模块,每个子模块都有自己的依赖项。我正在运行顶级setup.sh,它安装顶级deps,然后运行它,它调用每个子模块的setup.sh 脚本。
git submodule foreach 'if [ -e "setup.sh" ]; then ${SUDO} "`pwd`/setup.sh"; fi'
这运行得很好,但是当sub1 和sub2 子模块调用它们自己的setup.sh 脚本时,问题就出现了。
当 sub1 和 sub2 setup.sh 脚本运行任何 git 命令时,它会失败并显示错误:
fatal: not a git repository: '.git'
sub1 和 sub2 脚本中的pwd 为我提供了正确的路径,并且这些脚本单独工作也很好。
项目结构:
.
├── setup.sh
└── submodules
├── sub1
| ├── setup.sh
| └── submodules
| └── sub3
| └── setup.sh
└── sub2
├── setup.sh
└── submodules
└── sub4
└── setup.sh
抱歉,如果这是一个愚蠢的问题,非常感谢。
【问题讨论】:
-
只是猜测,但请尝试
unset GIT_DIR; if [ -e "setup.sh" ]; ...(用其余部分填写...- 基本上只是在foreach 命令前面取消设置GIT_DIR)。 -
(如果可行,对我来说这似乎是
git submodule foreach中的一个错误) -
@torek 你应该回答这个问题。
-
@kzh:完成。不过,我花了一段时间才再次找到
--local-env-vars。 :-)
标签: bash git git-submodules