我有repo
包装器和大约十几个不同的 git 存储库。
我想要一个补丁,以后可以通过以下方式应用/使用:
我想对所有更改的子模块执行此命令:
git checkout -b all_sub_branch
git commit -a all_submodules
git format-patch all_submodules aaa.patch
git apply aaa.patch
我有repo
包装器和大约十几个不同的 git 存储库。
我想要一个补丁,以后可以通过以下方式应用/使用:
我想对所有更改的子模块执行此命令:
git checkout -b all_sub_branch
git commit -a all_submodules
git format-patch all_submodules aaa.patch
git apply aaa.patch
普通的 git 答案(使用子模块):
为每个子模块完成的这种过程可以通过以下方式启动:
git submodule foreach [--recursive] ...
'...' 指的是一个 git 别名,它将包含你所有的命令。
foreach
在每个签出的子模块中评估任意 shell 命令。
该命令可以访问变量$name
、$path
和:$sha1
$toplevel
$name
是 中相关子模块部分的名称.gitmodules
,$path
是相对于超级项目的子模块目录的名称,$sha1
是超级项目中记录的提交,并且$toplevel
是超级项目顶层的绝对路径。此命令忽略在超级项目中定义但未检出的任何子模块。
除非 given--quiet
,否则foreach
在评估命令之前打印每个子模块的名称。
如果--recursive
给出,则递归遍历子模块(即,给定的 shell 命令也在嵌套的子模块中进行评估)。
问题是android repo
wrapper 命令以自己独特的方式完成了 git submodule 的工作。
所以相当于git submodule foreach
可能是:repo forall
,例如:
repo forall -c 'git status'