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 4.0 kB

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

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