diff --git a/build/env.sh b/build/env.sh index ccb0d85b..cc240384 100755 --- a/build/env.sh +++ b/build/env.sh @@ -23,7 +23,7 @@ BASE_DIR=$(cd `dirname $0`/..; pwd) ENV_SHELL=$BASE_DIR/build/env.sh #执行代码库更新的脚本; -UPDATE_SHELL=$BASE_DIR/build/submodules.sh +UPDATE_SHELL=$BASE_DIR/build/repo.sh #执行测试的脚本; TEST_SHELL=$BASE_DIR/build/test.sh @@ -46,9 +46,12 @@ TEST_DIR=$BASE_DIR/test #初始化参数:是否略过测试步骤; SKIP_TESTS=0 -#初始化参数:是否略过子项目的更新; +#初始化参数:是否略过子模块的更新;默认值:1-忽略; SKIP_SUBMODULES_UPDATE=1 +#初始化参数:是否将仓库采用公开配置(即覆盖本地化配置); +CONFIG_REPO_PUBLIC=0 + #检查输入参数 for i in $*; do case $i in @@ -64,6 +67,13 @@ for i in $*; do SKIP_SUBMODULES_UPDATE=0 ;; + "--public") + #仓库采用公开配置; + echo "收到参数 --public 指示仓库采用公开配置。。。" + + CONFIG_REPO_PUBLIC=1 + ;; + esac done diff --git a/build/submodules.sh b/build/repo.sh similarity index 65% rename from build/submodules.sh rename to build/repo.sh index 1925d054..fc46b52c 100755 --- a/build/submodules.sh +++ b/build/repo.sh @@ -5,24 +5,11 @@ then source `dirname $0`/env.sh "$*" fi -#检查是否要跳过子模块更新环节; -if [ $SKIP_SUBMODULES_UPDATE == 1 ] -then - echo "跳过子模块代码更新操作。。。" - ${RTN} -fi -#初始化变量 SUBMODULES_UPDATED -if [ ! $SUBMODULES_UPDATED ] -then - SUBMODULES_UPDATED=0 -fi -if [ $SUBMODULES_UPDATED == 1 ] -then - echo "代码库已经最新,跳过更新操作。。。" - ${RTN} -fi +echo "切换到仓库根目录。。。" +cd $BASE_DIR +pwd #先执行初始化; 注:此命令只在 .git/config 文件中没有相应子模块的配置时才生效,重复执行并不会更改已有的配置; git submodule init @@ -33,10 +20,10 @@ echo "检查是否执行子模块的本地化配置。。。" LOCAL_CONFIG="$BASE_DIR/.git/local.config" LOCALIZED=0 -if [ -f $LOCAL_CONFIG ] +if [ -f $LOCAL_CONFIG -a $CONFIG_REPO_PUBLIC == 0 ] then #执行子模块的本地化配置,将子模块的远程仓库地址指向本地; - echo "---------------- 执行子模块的本地化配置 ----------------" + echo "---------------- 执行仓库的本地化配置 ----------------" #解析本地配置 KEYS=($(cat $LOCAL_CONFIG | awk -F '=' 'length($1)>0 { print $1}')) VALUES=($(cat $LOCAL_CONFIG | awk -F '=' 'length($2)>0 { print $2}')) @@ -58,7 +45,7 @@ then ERR=$? if [ $ERR != 0 ] then - echo "执行子模块的本地化配置的过程中发生了错误[$ERR]!!终止构建!!" + echo "执行仓库的本地化配置的过程中发生了错误[$ERR]!!终止构建!!" ${RTN} $ERR fi done @@ -66,17 +53,68 @@ then LOCALIZED=1 fi - echo "---------------- 完成子模块的本地化配置 ----------------" + echo "---------------- 完成执行仓库的本地化配置 ----------------" fi -if [ LOCALIZED == 0 ] + +# 如果没有进行仓库的本地化配置,则将仓库设置为公开配置; +cd $BASE_DIR + +if [ $LOCALIZED == 0 ] then - echo "---------------- 执行子模块的公共配置 ----------------" + echo "---------------- 执行仓库的公共配置 ----------------" + + echo "同步子模块的公共配置。。。" git submodule sync -fi + # 更新远程仓库地址; + echo "更新远程仓库地址。。。" + git config remote.origin.url git@github.com:blockchain-jd-com/jdchain.git + + + echo "---------------- 完成执行仓库的公共配置 ----------------" +fi + + +#同步更新子模块的远程仓库 origin 的地址; +echo "---------------- 更新子模块的远程仓库地址 ----------------" +# 子模块名称列表; + +SUBMODULES=$(git submodule | awk '{print $2}') +for m in $SUBMODULES; +do + SUBMODULE_URL=$(git config --get submodule.$m.url) + echo "模块[$m].URL="$SUBMODULE_URL + + cd $BASE_DIR/$m + + git config remote.origin.url $SUBMODULE_URL + + cd $BASE_DIR +done + +#检查是否要跳过子模块更新环节; +if [ $SKIP_SUBMODULES_UPDATE == 1 ] +then + echo "跳过子模块代码更新操作。。。" + ${RTN} +fi + +#初始化变量 SUBMODULES_UPDATED +if [ ! $SUBMODULES_UPDATED ] +then + SUBMODULES_UPDATED=0 +fi + +if [ $SUBMODULES_UPDATED == 1 ] +then + echo "代码库已经最新,跳过更新操作。。。" + ${RTN} +fi + +# 更新子模块代码库 echo "---------------- 更新子模块代码库 ----------------" cd $BASE_DIR echo "git submodule update --recursive --progress --jobs 6" @@ -94,3 +132,5 @@ fi SUBMODULES_UPDATED=1 echo "---------------- 完成子模块代码库更新 ----------------" + +