pull.sh 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. source "$(dirname "$0")/common.sh"
  3. product_code_list=("nomo")
  4. for product_code in "${product_code_list[@]}"; do
  5. echo "${MAGENTA}正在合并 ${product_code} 代码...${RESET}"
  6. # 切换并拉取 ${product_code}-prod 分支
  7. execute_command "git checkout ${product_code}-prod" "切换至 ${product_code}-prod 分支失败"
  8. execute_command "git pull" "拉取 ${product_code}-prod 分支最新内容失败"
  9. # 合并 ${product_code}-prod 到 ${product_code}-test
  10. execute_command "git checkout ${product_code}-test" "切换至 ${product_code}-test 分支失败"
  11. execute_command "git pull" "拉取 ${product_code}-test 分支最新内容失败"
  12. execute_command "git merge ${product_code}-prod" "合并 ${product_code}-prod 到 ${product_code}-test 分支失败" "false"
  13. merge_p2t_status=$?
  14. if [ $merge_p2t_status -ne 0 ]; then
  15. # 检查是否有冲突
  16. if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
  17. echo "${YELLOW}检测到合并冲突,请手动解决冲突...${RESET}"
  18. echo "${YELLOW}解决冲突后,按任意键继续...${RESET}"
  19. read -n 1 -s -r -p ""
  20. if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
  21. echo "${RED}错误:仍存在未解决的冲突,请处理后再继续${RESET}"
  22. exit 1
  23. fi
  24. execute_command "git commit -m 'chore(merge): 解决冲突'" "提交冲突解决方案失败"
  25. else
  26. exit ${merge_p2t_status}
  27. fi
  28. fi
  29. execute_command "git push" "推送 ${product_code}-test 分支失败"
  30. # 合并 ${product_code}-test 到 main
  31. execute_command "git checkout main" "切换至 main 分支失败"
  32. execute_command "git pull" "拉取 main 分支最新内容失败"
  33. execute_command "git merge ${product_code}-test" "合并 ${product_code}-test 到 main 分支失败" "false"
  34. merge_t2m_status=$?
  35. if [ $merge_t2m_status -ne 0 ]; then
  36. # 检查是否有冲突
  37. if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
  38. echo "${YELLOW}检测到合并冲突,请手动解决冲突...${RESET}"
  39. echo "${YELLOW}解决冲突后,按任意键继续...${RESET}"
  40. read -n 1 -s -r -p ""
  41. if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
  42. echo "${RED}错误:仍存在未解决的冲突,请处理后再继续${RESET}"
  43. exit 1
  44. fi
  45. execute_command "git commit -m 'chore(merge): 解决冲突'" "提交冲突解决方案失败"
  46. else
  47. exit ${merge_t2m_status}
  48. fi
  49. fi
  50. execute_command "git push" "推送至 main 分支失败"
  51. done
  52. # # 合并 main 到 ${product_code}-dev
  53. # execute_command "git checkout ${product_code}-dev" "切换至 ${product_code}-dev 分支失败"
  54. # execute_command "git pull" "拉取 ${product_code}-dev 分支最新内容失败"
  55. # execute_command "git merge main" "合并 main 到 ${product_code}-dev 分支失败" "false"
  56. # merge_m2d_status=$?
  57. # if [ $merge_m2d_status -ne 0 ]; then
  58. # # 检查是否有冲突
  59. # if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
  60. # echo "${YELLOW}检测到合并冲突,请手动解决冲突...${RESET}"
  61. # echo "${YELLOW}解决冲突后,按任意键继续...${RESET}"
  62. # read -n 1 -s -r -p ""
  63. # if [[ $(git ls-files -u | wc -l) -gt 0 ]]; then
  64. # echo "${RED}错误:仍存在未解决的冲突,请处理后再继续${RESET}"
  65. # exit 1
  66. # fi
  67. # execute_command "git commit -m 'chore(merge): 解决冲突'" "提交冲突解决方案失败"
  68. # else
  69. # exit ${merge_m2d_status}
  70. # fi
  71. # fi
  72. # execute_command "git push" "推送至 ${product_code}-dev 分支失败"
  73. # 切换到 xiaom 分支
  74. execute_command "git checkout xiaom" "切换至 xiaom 分支失败"