使用“继续在子模块上循环”;git子模块foreach“;非零退出后的命令

使用“继续在子模块上循环”;git子模块foreach“;非零退出后的命令,git,bash,git-submodules,Git,Bash,Git Submodules,我有一个包含许多子模块的项目。我想使用以下命令在每个子模块上循环: git子模块foreach npm安装 我希望脚本继续在每个子模块上循环,即使一个子模块返回错误(非零返回代码)。当前,在任何子模块中运行此命令的非零返回代码将导致git停止在其余子模块上循环 关于如何做到这一点有什么建议吗?您可以看到这一点 我不使用GIT,但如果您能够找到.gitmodules文件,则可能很容易为每个子模块循环: <command to find all of your submodules>|w

我有一个包含许多子模块的项目。我想使用以下命令在每个子模块上循环:

git子模块foreach npm安装

我希望脚本继续在每个子模块上循环,即使一个子模块返回错误(非零返回代码)。当前,在任何子模块中运行此命令的非零返回代码将导致git停止在其余子模块上循环

关于如何做到这一点有什么建议吗?

您可以看到这一点

我不使用GIT,但如果您能够找到.gitmodules文件,则可能很容易为每个子模块循环:

<command to find all of your submodules>|while read; do
    # ... (default use $REPLY as an item)
done
|读取时;做
# ... (默认使用$REPLY作为项目)
完成
或:

读取时
;做
# ...

完成只需使您的命令始终返回一个
0
代码,如下所示:

git submodule foreach 'npm install || :'
这摘自手册:
git帮助子模块

foreach
计算每个签出子模块中的任意shell命令。
该命令可以访问变量$name、$path、$sha1和
$toplevel:$name是中相关子模块节的名称
.gitmodules,$path是相对子模块目录的名称
对于超级项目,$sha1是
超级项目,而$toplevel是到达顶级的绝对路径
超级项目的一部分。超级项目中定义的任何子模块,但
此命令将忽略未签出的。除非给予安静,
foreach在计算前打印每个子模块的名称
指挥部。如果给定--recursive,则遍历子模块
递归地(即给定的shell命令在嵌套
子模块)。在任何
子模块导致处理终止。这可能是
通过在命令末尾添加| |:来重写。
例如,git子模块foreach'echo$path`git rev parse
标题“”将显示每个文件的路径和当前签出的提交
子模块。
bash中的
帮助:
中的命令

::
空命令。
无效;命令什么也不做。
退出状态:
总是成功的。

总是成功
:)

git子模块foreach'npm install | | true'
也会成功。它在Windows上不起作用。应该是吗?即使使用bash,``只尝试执行第一个,但还是会中断。@MarceloFilho:尝试使用git bash。使用git bash@MaBe…:/@MarceloFilho:请打开一个新问题,描述这个问题(这样每个人都可以重复),并将这个问题链接到每个“纱线”的git子模块
git submodule foreach 'npm install || :'