我的缩进是要有一个脚本,该脚本根据给出的分支来更新所有git子模块。如果子模块没有这样的分支,则使用master。
这就是我现在所拥有的:
#!/bin/bash -x
if [ -z $1 ]; then
echo "Branch name required."
exit
fi
function pbranch {
exists=`git show-ref refs/heads/$branch`
if [ -z $exists ]; then
branch="master"
fi
git co $branch
git pull origin $branch
}
branch=$1
git submodule foreach pbranch
但是在运行此脚本时,会引发错误:
oleq@pc ~/project> git-fetchmodules major
+ '[' -z major ']'
+ branch=major
+ git submodule foreach pbranch
Entering 'submodule'
/usr/lib/git-core/git-submodule: 1: eval: pbranch: not found
Stopping at 'submodule'; script returned non-zero status.
我的猜测是git submodule foreach
利用了eval(根据文档),在这种情况下我没有正确使用它。
关于如何在“内联回调”中使用此命令的例子有数十亿,但我找不到函数形式的回调中的单个命令。任何想法如何解决这个问题?
git-pbranch-submodule
,它的行为就像内置的git命令:git pbranch-submodule
或git submodule foreach git pbranch-submodule
。(请注意,foreach接受shell命令而不是git命令。)