From 06dd59aafc9d3ce62fc11cc79369a50d54d3957a Mon Sep 17 00:00:00 2001 From: huanghaiquan Date: Sun, 29 Dec 2019 00:38:24 +0800 Subject: [PATCH] Optimized build script to support applying local repository url for the submodules; --- build/env.sh | 1 + build/update.sh | 42 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/build/env.sh b/build/env.sh index bdd77ffe..ba420322 100755 --- a/build/env.sh +++ b/build/env.sh @@ -48,6 +48,7 @@ SKIP_TESTS=0 #初始化参数:是否略过子项目的更新; SKIP_SUBMODULES_UPDATE=0 + #检查输入参数 for i in $*; do case $i in diff --git a/build/update.sh b/build/update.sh index 79709e0b..9ebcd5dc 100755 --- a/build/update.sh +++ b/build/update.sh @@ -23,8 +23,44 @@ then echo "代码库已经最新,跳过更新操作。。。" ${RTN} fi + +#先执行初始化; 注:此命令只在 .git/config 文件中没有相应子模块的配置时才生效,重复执行并不会更改已有的配置; +git submodule init + +#根据本地仓库的 .git 目录下是否存在 local.sh 脚本判断是否在更新子模块的代码库之前执行本地化配置; +echo "检查是否执行子模块的本地化配置。。。" +#判断本地化配置脚本是否存在; +LOCAL_CONFIG="$BASE_DIR/.git/local.config" +if [ -f $LOCAL_CONFIG ] +then + #执行子模块的本地化配置,将子模块的远程仓库地址指向本地; + echo "---------------- 执行子模块的本地化配置 ----------------" + #解析本地配置 + KEYS=($(cat $LOCAL_CONFIG | awk -F '=' 'length($1)>0 { print $1}')) + VALUES=($(cat $LOCAL_CONFIG | awk -F '=' 'length($2)>0 { print $2}')) + + for ((i=0; i<${#KEYS[@]}; i ++)); + do + echo "[$i]: git config ${KEYS[i]} ${VALUES[i]}" + git config ${KEYS[i]} ${VALUES[i]} + + #检查执行结果是否正常 + ERR=$? + if [ $ERR != 0 ] + then + echo "执行子模块的本地化配置的过程中发生了错误[$ERR]!!终止构建!!" + ${RTN} $ERR + fi + done + + echo "---------------- 完成子模块的本地化配置 ----------------" +else + echo "---------------- 执行子模块的公共配置 ----------------" + git submodule sync +fi + -echo "---------------- 更新代码库 ----------------" +echo "---------------- 更新子模块代码库 ----------------" cd $BASE_DIR git submodule update --init --recursive @@ -32,11 +68,11 @@ git submodule update --init --recursive ERR=$? if [ $ERR != 0 ] then - echo "更新代码库时发生了错误!!返回错误码:$ERR" + echo "更新子模块代码库时发生了错误!!返回错误码:$ERR" ${RTN} $ERR fi #标记代码已经更新; SUBMODULES_UPDATED=1 -echo "---------------- 完成代码库更新 ----------------" +echo "---------------- 完成子模块代码库更新 ----------------"