是否有一种可靠的方法来执行递归深度优先 git submodule foreach
命令?我正在使用完成这项工作的 foreach --recursive
命令,除了它是广度优先的。这是一个问题,因为如果我有以下结构:
- 一个
- B
- C
我在所有三个中都有提交,foreach --recursive add -A && git commit ...
将命中 A、B、C,如果我希望 super 模块捕获,这是有问题的B当时的提交。
我找到了 this discussion从 2008 年开始,但我所拥有的当前 Git 版本 (1.7.9.5) 中似乎没有任何建议的功能。
我编写了一个小的 bash 函数来执行此操作(请原谅速记命名):
function git-sfed() { git submodule foreach "git submodule foreach '$*' && $*"; }
用下面奇特的命令测试它似乎有效:
git-sfed 'python -c "import sys; print sys.argv" $path'
这个命令看起来是否健壮,或者是否有其他常见的现有方法?
最佳答案
你可以试试这个
git submodule foreach --recursive | tail -r | sed 's/Entering//' | xargs -I% cd % ; git add -A \& git commit
这个列表(递归地)所有子模块,然后反转列表,tail -r
这样你就可以按照你想要的顺序获得目录( child 优先),进入目录并做你想做的事想要进去。
关于git submodule foreach - 首先递归提交子模块的可靠方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846967/