You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

repo.sh 3.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #调用当前脚本目录下 env.sh 脚本,设置环境变量,处理当前传入参数;
  2. if [ ! $ENV_SHELL ]
  3. then
  4. source `dirname $0`/env.sh "$*"
  5. fi
  6. echo "切换到仓库根目录。。。"
  7. cd $BASE_DIR
  8. pwd
  9. #先执行初始化; 注:此命令只在 .git/config 文件中没有相应子模块的配置时才生效,重复执行并不会更改已有的配置;
  10. git submodule init
  11. #根据本地仓库的 .git 目录下是否存在 local.sh 脚本判断是否在更新子模块的代码库之前执行本地化配置;
  12. echo "检查是否执行子模块的本地化配置。。。"
  13. #判断本地化配置脚本是否存在;
  14. LOCAL_CONFIG="$BASE_DIR/.git/local.config"
  15. LOCALIZED=0
  16. if [ -f $LOCAL_CONFIG -a $CONFIG_REPO_PUBLIC == 0 ]
  17. then
  18. #执行子模块的本地化配置,将子模块的远程仓库地址指向本地;
  19. echo "---------------- 执行仓库的本地化配置 ----------------"
  20. #解析本地配置
  21. KEYS=($(cat $LOCAL_CONFIG | awk -F '=' 'length($1)>0 { print $1}'))
  22. VALUES=($(cat $LOCAL_CONFIG | awk -F '=' 'length($2)>0 { print $2}'))
  23. #匹配子模块 URL 配置名称的正则表达式
  24. # REG="submodule[\.].*[\.]url"
  25. #判断本地配置是否为空;
  26. echo "共有 ${#KEYS[@]} 项本地配置。。。"
  27. if [ ${#KEYS[@]} -gt 0 ]
  28. then
  29. for ((i=0; i<${#KEYS[@]}; i++));
  30. do
  31. #执行本地化配置;
  32. echo "[$i]: git config ${KEYS[i]} ${VALUES[i]}"
  33. git config ${KEYS[i]} ${VALUES[i]}
  34. #检查执行结果是否正常
  35. ERR=$?
  36. if [ $ERR != 0 ]
  37. then
  38. echo "执行仓库的本地化配置的过程中发生了错误[$ERR]!!终止构建!!"
  39. ${RTN} $ERR
  40. fi
  41. done
  42. LOCALIZED=1
  43. fi
  44. echo "---------------- 完成执行仓库的本地化配置 ----------------"
  45. fi
  46. # 如果没有进行仓库的本地化配置,则将仓库设置为公开配置;
  47. cd $BASE_DIR
  48. if [ $LOCALIZED == 0 ]
  49. then
  50. echo "---------------- 执行仓库的公共配置 ----------------"
  51. echo "同步子模块的公共配置。。。"
  52. git submodule sync
  53. # 更新远程仓库地址;
  54. echo "更新远程仓库地址。。。"
  55. git config remote.origin.url git@github.com:blockchain-jd-com/jdchain.git
  56. echo "---------------- 完成执行仓库的公共配置 ----------------"
  57. fi
  58. #同步更新子模块的远程仓库 origin 的地址;
  59. echo "---------------- 更新子模块的远程仓库地址 ----------------"
  60. # 子模块名称列表;
  61. SUBMODULES=$(git submodule | awk '{print $2}')
  62. for m in $SUBMODULES;
  63. do
  64. SUBMODULE_URL=$(git config --get submodule.$m.url)
  65. echo "模块[$m].URL="$SUBMODULE_URL
  66. cd $BASE_DIR/$m
  67. git config remote.origin.url $SUBMODULE_URL
  68. cd $BASE_DIR
  69. done
  70. #检查是否要跳过子模块更新环节;
  71. if [ $SKIP_SUBMODULES_UPDATE == 1 ]
  72. then
  73. echo "跳过子模块代码更新操作。。。"
  74. ${RTN}
  75. fi
  76. #初始化变量 SUBMODULES_UPDATED
  77. if [ ! $SUBMODULES_UPDATED ]
  78. then
  79. SUBMODULES_UPDATED=0
  80. fi
  81. if [ $SUBMODULES_UPDATED == 1 ]
  82. then
  83. echo "代码库已经最新,跳过更新操作。。。"
  84. ${RTN}
  85. fi
  86. # 更新子模块代码库
  87. echo "---------------- 更新子模块代码库 ----------------"
  88. cd $BASE_DIR
  89. echo "git submodule update --recursive --progress --jobs 6"
  90. git submodule update --recursive --progress --jobs 6
  91. #检查执行结果是否正常
  92. ERR=$?
  93. if [ $ERR != 0 ]
  94. then
  95. echo "更新子模块代码库时发生了错误!!返回错误码:$ERR"
  96. ${RTN} $ERR
  97. fi
  98. #标记代码已经更新;
  99. SUBMODULES_UPDATED=1
  100. echo "---------------- 完成子模块代码库更新 ----------------"

一个面向企业应用场景的通用区块链框架系统,能够作为企业级基础设施,为业务创新提供高效、灵活和安全的解决方案