diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index e5e9457..2ce169a 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -5,7 +5,6 @@ get_module_latest_tag() { local module_name="$1" git fetch origin --tags 2>/dev/null - # 筛选 模块名- 开头标签,按版本排序取最新 git ls-remote --tags origin "${module_name}-*" 2>/dev/null \ | grep -v '\^{}' \ | sort -V \ @@ -45,7 +44,7 @@ if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then exit 1 fi -# ====================== 目录结构校验(保留原有) ====================== +# ====================== 目录结构校验 ====================== MERGE_OBJECTS_LIST=( .git .gitignore @@ -131,13 +130,11 @@ MERGE_APP_PROJECT_LIST=(DemoAPP) echo -e "---------- 应用型模块合并 ----------" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - # 1.获取远程最新TAG LATEST_TAG=$(get_module_latest_tag "$item_lower") if [ -z "$LATEST_TAG" ]; then echo "跳过 $item_lower :未查询到任何版本标签" continue fi - # 2.通过TAG获取对应提交点Commit TARGET_COMMIT=$(get_commit_by_tag "$LATEST_TAG") if [ -z "$TARGET_COMMIT" ]; then echo "跳过 $item_lower :标签 $LATEST_TAG 未查询到对应提交点" @@ -149,8 +146,8 @@ for item in "${MERGE_APP_PROJECT_LIST[@]}"; do echo "对应提交点:$TARGET_COMMIT" echo "----------------------------------------" - # 3.使用Commit从远程模块分支拉取目录合并到本地 - git checkout origin/${item_lower} ${TARGET_COMMIT}:${item_lower} + # 正确写法:用commit检出指定目录 + git checkout ${TARGET_COMMIT} -- ${item_lower} git add ${item_lower} git commit -m "合并模块${item} 来源最新标签:${LATEST_TAG} 提交点:${TARGET_COMMIT}" done @@ -160,13 +157,11 @@ MERGE_LIB_PROJECT_LIST=(WinBoLL APPBase AES) echo -e "---------- 类库模块合并 ----------" for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - # 1.获取远程最新TAG LATEST_TAG=$(get_module_latest_tag "$item_lower") if [ -z "$LATEST_TAG" ]; then echo "跳过 $item_lower :未查询到任何版本标签" continue fi - # 2.通过TAG获取对应提交点Commit TARGET_COMMIT=$(get_commit_by_tag "$LATEST_TAG") if [ -z "$TARGET_COMMIT" ]; then echo "跳过 $item_lower :标签 $LATEST_TAG 未查询到对应提交点" @@ -178,8 +173,8 @@ for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do echo "对应提交点:$TARGET_COMMIT" echo "----------------------------------------" - # 3.拉取主目录 + lib目录 - git checkout origin/${item_lower} ${TARGET_COMMIT}:${item_lower} ${TARGET_COMMIT}:lib${item_lower} + # 同时检出主目录 + lib目录 + git checkout ${TARGET_COMMIT} -- ${item_lower} lib${item_lower} git add ${item_lower} lib${item_lower} git commit -m "合并模块${item} 来源最新标签:${LATEST_TAG} 提交点:${TARGET_COMMIT}" done