Mi intención es tener un script que actualice todos los submódulos git de acuerdo con qué rama se proporciona. Si no hay tal rama para un submódulo, se usa master.
Esto es lo que tengo ahora:
#!/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
Pero cuando se ejecuta este script, se produce el error:
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.
Supongo que git submodule foreach
utiliza eval (según la documentación ), que no uso correctamente en este contexto.
Hay miles de millones de ejemplos de cómo usar este comando con "devolución de llamada en línea", pero no pude encontrar uno solo con la devolución de llamada en forma de la función. Alguna idea de como resolver esto?
git-pbranch-submodule
, puede comportarse como un comando git incorporado:git pbranch-submodule
ogit submodule foreach git pbranch-submodule
. (Tenga en cuenta que foreach acepta un comando de shell y no un comando git.)