Mon intention est d'avoir un script qui met à jour tous les sous-modules git selon la branche donnée. S'il n'y a pas une telle branche pour un sous-module, master est utilisé.
Voici ce que j'ai maintenant:
#!/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
Mais lors de l'exécution de ce script, l'erreur est levée:
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.
Je suppose que git submodule foreach
utilise eval (selon la documentation ), que je n'utilise pas correctement dans ce contexte.
Il existe des milliards d' exemples sur la façon d'utiliser cette commande avec le "rappel en ligne", mais je n'ai pas trouvé un seul avec le rappel sous la forme de la fonction. Aucune idée sur la façon de résoudre ça?
git-pbranch-submodule
, il peut se comporter comme une commande git intégrée:git pbranch-submodule
ougit submodule foreach git pbranch-submodule
. (Notez que foreach accepte une commande shell et non une commande git.)