Indentasi saya adalah memiliki skrip yang memperbarui semua submodules git sesuai dengan cabang yang diberikan. Jika tidak ada cabang seperti itu untuk submodule, master digunakan.
Inilah yang saya miliki sekarang:
#!/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
Tetapi ketika menjalankan skrip ini, kesalahan terjadi:
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.
Dugaan saya adalah yang git submodule foreach
menggunakan eval (sesuai dengan dokumentasi ), yang saya tidak gunakan dengan benar dalam konteks ini.
Ada miliaran contoh cara menggunakan perintah ini dengan "inline callback" tetapi saya tidak dapat menemukan satu pun dengan callback dalam bentuk fungsi. Ada ide untuk mengatasi ini?
git-pbranch-submodule
, itu bisa berperilaku seperti perintah built-in git:git pbranch-submodule
ataugit submodule foreach git pbranch-submodule
. (Perhatikan bahwa foreach menerima perintah shell dan bukan perintah git.)