From 81b7af0ec4be8c4580f30861eb686f2b1af71682 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:45:57 +0800 Subject: [PATCH] =?UTF-8?q?1.=C2=A0=E6=8E=92=E5=BA=8F=E8=A7=84=E5=88=99?= =?UTF-8?q?=E5=BD=BB=E5=BA=95=E6=8D=A2=E6=8E=89=20=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E6=8C=89=E7=89=88=E6=9C=AC=E5=8F=B7=E6=8E=92=E5=BA=8F=EF=BC=8C?= =?UTF-8?q?=E6=8C=89=E6=A0=87=E7=AD=BE=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=BB=8E=E6=96=B0=E5=88=B0=E6=97=A7=EF=BC=8C=E6=B0=B8=E8=BF=9C?= =?UTF-8?q?=E6=8B=BF=E5=88=B0=E6=9C=80=E5=90=8E=E5=8F=91=E5=B8=83=E7=9A=84?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E6=A0=87=E7=AD=BE=20=E2=80=8B=202.=C2=A0?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=C2=A0-f=C2=A0=20=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E8=A6=86=E7=9B=96=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=8B=89=E5=8F=96?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E6=96=87=E4=BB=B6=20=E2=80=8B=203.=C2=A0?= =?UTF-8?q?=E4=BD=A0=E7=8E=B0=E5=9C=A8=20=C2=A0appbase-v15.20.12=C2=A0=20?= =?UTF-8?q?=E6=98=AF=E5=90=8E=E6=89=93=E7=9A=84=E6=A0=87=E7=AD=BE=EF=BC=8C?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E4=BC=9A=E7=9B=B4=E6=8E=A5=E4=BC=98=E5=85=88?= =?UTF-8?q?=E6=8A=93=E5=8F=96=E5=AE=83=20=E2=80=8B=204.=C2=A0=E6=97=A0?= =?UTF-8?q?=E5=B7=AE=E5=BC=82=E4=B9=9F=E4=BC=9A=E6=AD=A3=E5=B8=B8=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=9C=80=E6=96=B0=E6=A0=87=E7=AD=BE=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index 08d85eb..6d30f3b 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,14 +1,16 @@ #!/system/bin/sh -## 执行流程 -## 1.拉取远程所有标签 2.取模块最新标签 3.取标签对应commit 4.从远程commit拉取指定目录到本地 +## 逻辑:按时间取最新标签 → 拉取该标签目录合并 -# 获取模块最新完整标签 +# 按创建时间取模块最新标签(最新打的标签排最后) get_latest_module_tag(){ local mod=$1 - git ls-remote --tags origin "${mod}-*" | grep -v '\^{}' | sort -V | tail -1 | awk '{print $2}' | sed 's/refs\/tags\///' + git for-each-ref --sort=-creatordate --format='%(refname)' refs/tags/${mod}-* \ + | grep -v '\^{}' \ + | head -1 \ + | sed 's/refs\/tags\///' } -# 纯标签获取commit 不加多余前缀 +# 通过标签获取commit get_commit_from_tag(){ local tag=$1 git rev-parse --short "${tag}^{commit}" @@ -19,7 +21,7 @@ TARGET_DIR="/sdcard/AppProjects/Projects_Keeper_Tag" echo "进入目录:${TARGET_DIR}" cd "${TARGET_DIR}" || exit 1 -# 同步远程数据 +# 同步远程 echo "========================================" echo "同步远程分支与全部版本标签" echo "========================================" @@ -28,7 +30,7 @@ git fetch origin --tags echo "同步完成" echo "" -# 强制校验当前分支 +# 校验目标分支 NOW_BRANCH=$(git symbolic-ref --short HEAD) TARGET_BRANCH="projects_keeper_tag" if [ "${NOW_BRANCH}" != "${TARGET_BRANCH}" ];then @@ -36,7 +38,7 @@ if [ "${NOW_BRANCH}" != "${TARGET_BRANCH}" ];then exit 1 fi -# 目录结构校验保留 +# 目录结构校验 MERGE_OBJECTS_LIST=( .git .gitignore @@ -93,7 +95,7 @@ check_diff(){ } check_diff -echo -e "#@@@ 开始按远程最新标签合并模块源码 @@@#" +echo -e "#@@@ 按时间获取最新标签合并模块源码 @@@#" # 应用型模块 MERGE_APP_PROJECT_LIST=(DemoAPP) @@ -110,11 +112,11 @@ for name in "${MERGE_APP_PROJECT_LIST[@]}";do echo "跳过 ${low_name}:标签无有效提交点" continue fi - echo "模块:${low_name} 最新标签:${tag} 提交ID:${commit}" - # 标准正确拉取命令 - git checkout "${tag}" -- "${low_name}" + echo "模块:${low_name} 最新时间标签:${tag} 提交ID:${commit}" + # 强制拉取覆盖 + git checkout -f "${tag}" -- "${low_name}" git add "${low_name}" - git commit -m "合并模块${name} 来源标签${tag} 提交${commit}" + git commit -m "合并模块${name} 同步最新时间标签${tag}" done # 类库模块 @@ -132,10 +134,10 @@ for name in "${MERGE_LIB_PROJECT_LIST[@]}";do echo "跳过 ${low_name}:标签无有效提交点" continue fi - echo "模块:${low_name} 最新标签:${tag} 提交ID:${commit}" - git checkout "${tag}" -- "${low_name}" "lib${low_name}" + echo "模块:${low_name} 最新时间标签:${tag} 提交ID:${commit}" + git checkout -f "${tag}" -- "${low_name}" "lib${low_name}" git add "${low_name}" "lib${low_name}" - git commit -m "合并模块${name} 来源标签${tag} 提交${commit}" + git commit -m "合并模块${name} 同步最新时间标签${tag}" done echo "全部模块合并执行完毕"