| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/bin/bash
- product_code_list=("nomo")
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[0;33m'
- MAGENTA='\033[0;35m'
- RESET='\033[0m'
- function execute_command() {
- command="$1"
- message="$2"
- exit_on_failure=${3:-true}
- echo "${GREEN}执行命令:${command}${RESET}"
- eval "${command}"
- status=$?
- if [[ ${status} -ne 0 ]]; then
- echo "${RED}错误:${message}${RESET}"
- if [[ "$exit_on_failure" == "true" ]]; then
- exit ${status}
- else
- return ${status}
- fi
- fi
- }
- for product_code in "${product_code_list[@]}"; do
- echo "${MAGENTA}正在合并 ${product_code} 代码...${RESET}"
- # 切换并拉取 ${product_code}-prod 分支
- execute_command "git checkout ${product_code}-prod" "切换至 ${product_code}-prod 分支失败"
- execute_command "git pull" "拉取 ${product_code}-prod 分支最新内容失败"
- # 合并 ${product_code}-prod 到 ${product_code}-test
- execute_command "git checkout ${product_code}-test" "切换至 ${product_code}-test 分支失败"
- execute_command "git pull" "拉取 ${product_code}-test 分支最新内容失败"
- execute_command "git merge ${product_code}-prod" "合并 ${product_code}-prod 到 ${product_code}-test 分支失败" "false"
- merge_p2t_status=$?
- if [ $merge_p2t_status -ne 0 ]; then
- # 检查是否有冲突
- if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
- echo "${YELLOW}检测到合并冲突,请手动解决冲突...${RESET}"
- echo "${YELLOW}解决冲突后,按任意键继续...${RESET}"
- read -n 1 -s -r -p ""
- if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
- echo "${RED}错误:仍存在未解决的冲突,请处理后再继续${RESET}"
- exit 1
- fi
- execute_command "git commit -m 'chore(merge): 解决冲突'" "提交冲突解决方案失败"
- else
- exit ${merge_p2t_status}
- fi
- fi
- execute_command "git push" "推送 ${product_code}-test 分支失败"
- # 合并 ${product_code}-test 到 master
- execute_command "git checkout master" "切换至 master 分支失败"
- execute_command "git pull" "拉取 master 分支最新内容失败"
- execute_command "git merge ${product_code}-test" "合并 ${product_code}-test 到 master 分支失败" "false"
- merge_t2m_status=$?
- if [ $merge_t2m_status -ne 0 ]; then
- # 检查是否有冲突
- if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
- echo "${YELLOW}检测到合并冲突,请手动解决冲突...${RESET}"
- echo "${YELLOW}解决冲突后,按任意键继续...${RESET}"
- read -n 1 -s -r -p ""
- if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
- echo "${RED}错误:仍存在未解决的冲突,请处理后再继续${RESET}"
- exit 1
- fi
- execute_command "git commit -m 'chore(merge): 解决冲突'" "提交冲突解决方案失败"
- else
- exit ${merge_t2m_status}
- fi
- fi
- execute_command "git push" "推送至 master 分支失败"
- done
- # # 合并 master 到 ${product_code}-dev
- # execute_command "git checkout ${product_code}-dev" "切换至 ${product_code}-dev 分支失败"
- # execute_command "git pull" "拉取 ${product_code}-dev 分支最新内容失败"
- # execute_command "git merge master" "合并 master 到 ${product_code}-dev 分支失败" "false"
- # merge_m2d_status=$?
- # if [ $merge_m2d_status -ne 0 ]; then
- # # 检查是否有冲突
- # if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
- # echo "${YELLOW}检测到合并冲突,请手动解决冲突...${RESET}"
- # echo "${YELLOW}解决冲突后,按任意键继续...${RESET}"
- # read -n 1 -s -r -p ""
- # if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
- # echo "${RED}错误:仍存在未解决的冲突,请处理后再继续${RESET}"
- # exit 1
- # fi
- # execute_command "git commit -m 'chore(merge): 解决冲突'" "提交冲突解决方案失败"
- # else
- # exit ${merge_m2d_status}
- # fi
- # fi
- # execute_command "git push" "推送至 ${product_code}-dev 分支失败"
- # 切换到 xiaom 分支
- execute_command "git checkout xiaom" "切换至 xiaom 分支失败"
|