Мій відступ - це створення сценарію, який оновлює всі підмодулі 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.)