|
@@ -1,198 +0,0 @@
|
|
|
-#!/bin/bash
|
|
|
|
|
-
|
|
|
|
|
-RED='\033[0;31m'
|
|
|
|
|
-GREEN='\033[0;32m'
|
|
|
|
|
-YELLOW='\033[0;33m'
|
|
|
|
|
-MAGENTA='\033[0;35m'
|
|
|
|
|
-RESET='\033[0m'
|
|
|
|
|
-
|
|
|
|
|
-flag_add=false
|
|
|
|
|
-flag_commit=false
|
|
|
|
|
-flag_md=false
|
|
|
|
|
-flag_mm=false
|
|
|
|
|
-flag_pm=false
|
|
|
|
|
-commit_message=""
|
|
|
|
|
-
|
|
|
|
|
-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
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-function show_usage() {
|
|
|
|
|
- echo "用法:$0 [选项]"
|
|
|
|
|
- echo "选项:"
|
|
|
|
|
- echo " -a 添加所有更改到暂存区"
|
|
|
|
|
- echo " -c <message> 提交更改到 xiaom 分支"
|
|
|
|
|
- echo " -md 合并 xiaom 到 dev 分支"
|
|
|
|
|
- echo " -mm 合并 xiaom 到 main 分支"
|
|
|
|
|
- echo " -pm 合并 main 到 xiaom 分支"
|
|
|
|
|
- echo " -h 显示此帮助信息"
|
|
|
|
|
- echo ""
|
|
|
|
|
- echo "示例:"
|
|
|
|
|
- echo " $0 -a -c \"feat: 添加新功能\""
|
|
|
|
|
- echo " $0 -md"
|
|
|
|
|
- echo " $0 -mm"
|
|
|
|
|
- echo " $0 -pm"
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# 解析参数
|
|
|
|
|
-while [[ $# -gt 0 ]]; do
|
|
|
|
|
- case $1 in
|
|
|
|
|
- -a)
|
|
|
|
|
- flag_add=true
|
|
|
|
|
- shift
|
|
|
|
|
- ;;
|
|
|
|
|
- -c)
|
|
|
|
|
- if [[ -z "$2" || "$2" == -* ]]; then
|
|
|
|
|
- echo "${RED}错误:-c 选项需要一个提交信息参数${RESET}"
|
|
|
|
|
- show_usage
|
|
|
|
|
- exit 1
|
|
|
|
|
- fi
|
|
|
|
|
- flag_commit=true
|
|
|
|
|
- commit_message="$2"
|
|
|
|
|
- shift 2
|
|
|
|
|
- ;;
|
|
|
|
|
- -md)
|
|
|
|
|
- flag_md=true
|
|
|
|
|
- shift
|
|
|
|
|
- ;;
|
|
|
|
|
- -mm)
|
|
|
|
|
- flag_mm=true
|
|
|
|
|
- shift
|
|
|
|
|
- ;;
|
|
|
|
|
- -pm)
|
|
|
|
|
- flag_pm=true
|
|
|
|
|
- shift
|
|
|
|
|
- ;;
|
|
|
|
|
- -h | --help)
|
|
|
|
|
- show_usage
|
|
|
|
|
- exit 0
|
|
|
|
|
- ;;
|
|
|
|
|
- -*)
|
|
|
|
|
- echo "${RED}错误:未知选项 $1${RESET}"
|
|
|
|
|
- show_usage
|
|
|
|
|
- exit 1
|
|
|
|
|
- ;;
|
|
|
|
|
- *)
|
|
|
|
|
- echo "${RED}错误:未知参数 $1${RESET}"
|
|
|
|
|
- show_usage
|
|
|
|
|
- exit 1
|
|
|
|
|
- ;;
|
|
|
|
|
- esac
|
|
|
|
|
-done
|
|
|
|
|
-
|
|
|
|
|
-if [ "$flag_add" = true ]; then
|
|
|
|
|
- echo "${MAGENTA}执行添加所有更改操作...${RESET}"
|
|
|
|
|
- execute_command "git add ." "git add 操作失败"
|
|
|
|
|
-fi
|
|
|
|
|
-
|
|
|
|
|
-if [ "$flag_commit" = true ] && [ -n "$commit_message" ]; then
|
|
|
|
|
- echo "${MAGENTA}正在向 xiaom 分支提交变更,提交信息:${RESET}${YELLOW}\"${commit_message}\"${RESET}"
|
|
|
|
|
- execute_command "git checkout xiaom" "切换至 xiaom 分支失败"
|
|
|
|
|
- execute_command "git commit -m \"$commit_message\"" "提交操作失败"
|
|
|
|
|
- execute_command "git push" "推送至 xiaom 分支失败"
|
|
|
|
|
-fi
|
|
|
|
|
-
|
|
|
|
|
-if [ "$flag_pm" = true ]; then
|
|
|
|
|
- echo "${MAGENTA}正在合并 main 分支代码到个人分支 xiaom...${RESET}"
|
|
|
|
|
- # 合并 main 到 xiaom
|
|
|
|
|
- execute_command "git checkout main" "切换至 main 分支失败"
|
|
|
|
|
- execute_command "git pull" "拉取 main 分支最新内容失败"
|
|
|
|
|
- execute_command "git checkout xiaom" "切换至 xiaom 分支失败"
|
|
|
|
|
- execute_command "git merge main" "合并 main 到 xiaom 分支失败" "false"
|
|
|
|
|
- merge_m2x_status=$?
|
|
|
|
|
- if [ $merge_m2x_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_m2x_status}
|
|
|
|
|
- fi
|
|
|
|
|
- fi
|
|
|
|
|
- execute_command "git push" "推送 xiaom 分支失败"
|
|
|
|
|
-fi
|
|
|
|
|
-
|
|
|
|
|
-if [ "$flag_md" = true ]; then
|
|
|
|
|
- echo "${MAGENTA}正在合并代码到 nomo-dev 分支...${RESET}"
|
|
|
|
|
- # 合并 xiaom 到 nomo-dev
|
|
|
|
|
- execute_command "git checkout nomo-dev" "切换至 nomo-dev 分支失败"
|
|
|
|
|
- execute_command "git pull" "拉取 nomo-dev 分支最新内容失败"
|
|
|
|
|
- execute_command "git merge xiaom" "合并 xiaom 到 nomo-dev 分支失败" "false"
|
|
|
|
|
- merge_x2d_status=$?
|
|
|
|
|
- if [ $merge_x2d_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_x2d_status}
|
|
|
|
|
- fi
|
|
|
|
|
- fi
|
|
|
|
|
- execute_command "git push" "推送 nomo-dev 分支失败"
|
|
|
|
|
- execute_command "git checkout xiaom" "切换至 xiaom 分支失败"
|
|
|
|
|
-fi
|
|
|
|
|
-
|
|
|
|
|
-if [ "$flag_mm" = true ]; then
|
|
|
|
|
- echo "${MAGENTA}正在合并代码到 main 分支...${RESET}"
|
|
|
|
|
- # 合并 xiaom 到 main
|
|
|
|
|
- execute_command "git checkout main" "切换至 main 分支失败"
|
|
|
|
|
- execute_command "git pull" "拉取 main 分支最新内容失败"
|
|
|
|
|
- execute_command "git merge xiaom" "合并 xiaom 到 main 分支失败" "false"
|
|
|
|
|
- merge_x2m_status=$?
|
|
|
|
|
- if [ $merge_x2m_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_x2m_status}
|
|
|
|
|
- fi
|
|
|
|
|
- fi
|
|
|
|
|
- execute_command "git push" "推送 main 分支失败"
|
|
|
|
|
- execute_command "git checkout xiaom" "切换至 xiaom 分支失败"
|
|
|
|
|
-fi
|
|
|
|
|
-
|
|
|
|
|
-if [ "$flag_add" = false ] && [ "$flag_commit" = false ] && [ "$flag_pm" = false ] && [ "$flag_md" = false ] && [ "$flag_mm" = false ]; then
|
|
|
|
|
- echo "${YELLOW}未提供有效参数${RESET}"
|
|
|
|
|
- show_usage
|
|
|
|
|
-fi
|
|
|