1

我有repo包装器和大约十几个不同的 git 存储库。

我想要一个补丁,以后可以通过以下方式应用/使用:

我想对所有更改的子模块执行此命令:

git checkout -b all_sub_branch
git commit -a all_submodules
git format-patch all_submodules aaa.patch
git apply aaa.patch
4

1 回答 1

1

普通的 git 答案(使用子模块):

为每个子模块完成的这种过程可以通过以下方式启动:

git submodule foreach [--recursive] ...

'...' 指的是一个 git 别名,它将包含你所有的命令。

git submodule手册页

foreach

在每个签出的子模块中评估任意 shell 命令。
该命令可以访问变量$name$path和:$sha1$toplevel

  • $name是 中相关子模块部分的名称.gitmodules
  • $path是相对于超级项目的子模块目录的名称,
  • $sha1是超级项目中记录的提交,并且
  • $toplevel是超级项目顶层的绝对路径。

此命令忽略在超级项目中定义但未检出的任何子模块。
除非 given --quiet,否则foreach在评估命令之前打印每个子模块的名称。
如果--recursive给出,则递归遍历子模块(即,给定的 shell 命令也在嵌套的子模块中进行评估)。


问题是android repowrapper 命令以自己独特的方式完成了 git submodule 的工作。
所以相当于git submodule foreach可能是:repo forall,例如:

repo forall -c 'git status'

于 2013-01-30T08:01:52.433 回答