Benim niyetim, hangi dalın verildiğine göre tüm git alt modüllerini güncelleyen bir komut dosyasına sahip olmak. Bir alt modül için böyle bir dal yoksa, master kullanılır.
Şimdi sahip olduğum şey bu:
#!/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
Ancak bu komut dosyasını çalıştırırken hata atılır:
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.
Benim tahminim bu bağlamda doğru git submodule foreach
kullanmadığım eval ( belgelere göre ) kullanır.
Bu komutu "satır içi geri arama" ile nasıl kullanılacağına dair milyarlarca örnek var, ancak geri çağırma işlevi ile tek bir tane bulamadım. bunu nasıl çözeceğimize dair bir fikri olan?
git-pbranch-submodule
, yerleşik bir git komutu gibi davranabilir:git pbranch-submodule
veyagit submodule foreach git pbranch-submodule
. (Foreach komutunun git komutunu değil bir kabuk komutunu kabul ettiğini unutmayın.)