Mục đích của tôi là có một kịch bản cập nhật tất cả các mô hình con git theo nhánh nào được đưa ra. Nếu không có nhánh như vậy cho một mô hình con, chủ được sử dụng.
Đây là những gì tôi có bây giờ:
#!/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
Nhưng khi chạy tập lệnh này, lỗi được đưa ra:
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.
Tôi đoán là git submodule foreach
sử dụng eval (theo tài liệu ), mà tôi không sử dụng chính xác trong bối cảnh này.
Có hàng tỷ ví dụ về cách sử dụng lệnh này với "gọi lại nội tuyến" nhưng tôi không thể tìm thấy một ví dụ duy nhất với hàm gọi lại dưới dạng hàm. Bất kỳ ý tưởng làm thế nào để giải quyết điều này?
git-pbranch-submodule
, nó có thể hoạt động giống như một lệnh git tích hợp:git pbranch-submodule
hoặcgit submodule foreach git pbranch-submodule
. (Lưu ý rằng foreach chấp nhận lệnh shell chứ không phải lệnh git.)