From c7d79e160b6f0b4157ae13a40c2f2a8106574b57 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 10:50:04 +0800 Subject: [PATCH 01/22] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Projects=5FKeeper=5FTag?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E5=90=88=E5=B9=B6=E7=AE=A1=E7=90=86=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 223 ++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 .winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh new file mode 100644 index 0000000..c791a71 --- /dev/null +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -0,0 +1,223 @@ +#!/system/bin/sh +## 合并其他项目分支的模块源码到projects-keeper分支。 + +# ====================== 函数定义:获取模块最新提交对应的远程标签 ====================== +# 参数1:模块名(小写如appbase、aes) +# 自动以 origin/模块名 作为远程分支 +# 返回:有标签输出标签名,无标签输出空 +get_module_latest_tag() { + local module_dir="$1" + local remote_branch="origin/${module_dir}" + + # 获取该模块目录最新一次提交CommitHash + local latest_commit + latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" -- "$module_dir"/ 2>/dev/null) + + # 匹配远程同commit、模块前缀的标签,过滤废弃^{}引用 + git ls-remote --tags origin "${module_dir}*" 2>/dev/null \ + | grep -v '\^{}' \ + | grep "^${latest_commit}" \ + | awk '{print $2}' \ + | sed "s/refs\/tags\///" +} + +# ====================== 0. 进入目标目录 ====================== +TARGET_DIR="/sdcard/AppProjects/Projects_Keeper_Tag" + +echo "切换工作目录到:$TARGET_DIR" +if ! cd "$TARGET_DIR"; then + echo "==============================================" + echo "错误:无法进入目标目录 $TARGET_DIR" + echo "==============================================" + exit 1 +fi + +# ====================== 1. 拉取远程最新源码(失败直接退出) ====================== +echo "==============================================" +echo "正在拉取远程最新源码..." +echo "==============================================" +if ! git pull; then + echo "==============================================" + echo "错误:拉取远程源码失败!" + echo "请检查网络、仓库冲突或手动处理 git 状态后再执行脚本。" + echo "==============================================" + exit 1 +fi +echo "✅ 源码已拉取为最新状态" +echo "" + +# ====================== 2. 目录路径检查 ====================== +CUR_DIR=$(pwd) +if [ "$CUR_DIR" != "$TARGET_DIR" ]; then + echo "错误:当前目录不是项目根目录!" + echo "请先进入目录:$TARGET_DIR" + exit 1 +fi + +# ====================== 3. Git 分支检查 ====================== +CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null) +TARGET_BRANCH="projects-keeper" + +if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then + echo "错误:当前不在 $TARGET_BRANCH 分支!" + echo "当前分支:$CUR_BRANCH" + echo "请先执行:git checkout $TARGET_BRANCH" + exit 1 +fi + +# ====================== 4. 预设标准模块列表 ====================== +MERGE_OBJECTS_LIST=( +.git +.gitignore +.gitmodules +.winboll +GenKeyStore +LICENSE +LICENSE-Private-Demo +LICENSE-Private-Demo_docs +README.md +aes +appbase +autonfc +build.gradle +contacts +debugtemp +gallery +gpsrelaysentinel +gradle +gradle.properties-android-demo +gradle.properties-androidx-demo +gradlew +libaes +libappbase +libdebugtemp +libgpsrelaysentinel +libwinboll +local.properties-demo +mymessagemanager +positions +powerbell +settings.gradle-demo +winboll +winboll.properties-demo +) + +# ====================== 5. 获取当前目录真实文件列表 ====================== +REAL_ITEMS=() +while IFS= read -r line; do + if [[ "$line" != "." && "$line" != ".." ]]; then + REAL_ITEMS+=("$line") + fi +done < <(ls -a) + +# ====================== 6. 差异比对函数 ====================== +check_diff() { + local missing=() + local extra=() + + for item in "${MERGE_OBJECTS_LIST[@]}"; do + local found=0 + for r in "${REAL_ITEMS[@]}"; do + if [[ "$item" == "$r" ]]; then + found=1 + break + fi + done + if (( found == 0 )); then + missing+=("$item") + fi + done + + for r in "${REAL_ITEMS[@]}"; do + local found=0 + for item in "${MERGE_OBJECTS_LIST[@]}"; do + if [[ "$item" == "$r" ]]; then + found=1 + break + fi + done + if (( found == 0 )); then + extra+=("$r") + fi + done + + if [[ ${#missing[@]} -gt 0 || ${#extra[@]} -gt 0 ]]; then + echo "==============================================" + echo "【错误】合并环境与脚本预设列表不匹配!" + echo "请手动核对并修改合并脚本。" + echo "==============================================" + + if [[ ${#missing[@]} -gt 0 ]]; then + echo -e "\n👉 本地缺失项目:" + for m in "${missing[@]}"; do echo " $m"; done + fi + + if [[ ${#extra[@]} -gt 0 ]]; then + echo -e "\n👉 本地多余项目:" + for e in "${extra[@]}"; do echo " $e"; done + fi + + echo -e "\n==============================================" + exit 1 + fi +} + +# 执行差异校验 +check_diff + +# ====================== 全部校验通过,继续执行合并 ====================== +echo -e "#@@@ 开始合并模块源码 @@@# +## 目标合并对象列表:" + +for item in "${MERGE_OBJECTS_LIST[@]}"; do + echo "$item" +done + +echo -e "## 对象列表结束 +" + +## 合并 APP 项目 +MERGE_APP_PROJECT_LIST=( +DemoAPP +) +echo -e "#@@@ 开始合并应用型模块源码 @@@#" + +for item in "${MERGE_APP_PROJECT_LIST[@]}"; do + item_lower=$(echo "$item" | tr 'A-Z' 'a-z') + # 自动使用 origin/模块名 作为远程分支,检测标签 + MOD_TAG=$(get_module_latest_tag "$item_lower") + if [ -z "$MOD_TAG" ]; then + echo "跳过 $item_lower :最新提交未打标签" + continue + fi + echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" + git checkout origin/$item_lower $item_lower + git add . + git commit -m "合并 $item 项目(对应标签:$MOD_TAG)" +done + +## 合并 LIB 项目 +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') + # 自动使用 origin/模块名 作为远程分支,检测标签 + MOD_TAG=$(get_module_latest_tag "$item_lower") + if [ -z "$MOD_TAG" ]; then + echo "跳过 $item_lower :最新提交未打标签" + continue + fi + echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" + git checkout origin/$item_lower $item_lower lib$item_lower + git add . + git commit -m "合并 $item 项目(对应标签:$MOD_TAG)" +done + +echo '正在推送 Projects_Keeper 项目' +git push + From dc4eeefa55f832b58526d0af1f69aff483d6169a Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 11:04:46 +0800 Subject: [PATCH 02/22] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E5=88=86=E6=94=AF?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=A3=80=E6=B5=8B=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index c791a71..38f8586 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,5 +1,5 @@ #!/system/bin/sh -## 合并其他项目分支的模块源码到projects-keeper分支。 +## 合并其他项目分支的模块源码到projects_keeper_tag分支。 # ====================== 函数定义:获取模块最新提交对应的远程标签 ====================== # 参数1:模块名(小写如appbase、aes) @@ -56,7 +56,7 @@ fi # ====================== 3. Git 分支检查 ====================== CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null) -TARGET_BRANCH="projects-keeper" +TARGET_BRANCH="projects_keeper_tag" if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then echo "错误:当前不在 $TARGET_BRANCH 分支!" From c88a0a52a89c454b0061b754233aeb3d8268dccc Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 11:09:45 +0800 Subject: [PATCH 03/22] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E8=8E=B7=E5=8F=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...bashMergeProjects-to-Projects_Keeper_Tag.sh | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index 38f8586..a568128 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -9,14 +9,25 @@ get_module_latest_tag() { local module_dir="$1" local remote_branch="origin/${module_dir}" - # 获取该模块目录最新一次提交CommitHash + # 先同步远程分支元数据 + git fetch origin "$module_dir" 2>/dev/null + + # 【修复】直接取远程分支最新完整Commit,再限定模块目录 local latest_commit latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" -- "$module_dir"/ 2>/dev/null) - # 匹配远程同commit、模块前缀的标签,过滤废弃^{}引用 + echo " 调试:模块[$module_dir] 最新Commit = $latest_commit" + + # 无commit直接返回空 + if [ -z "$latest_commit" ]; then + echo " 调试:未获取到有效Commit,跳过" + return + fi + + # 【修复】放宽匹配,不用严格行首,兼容ls-remote输出格式 git ls-remote --tags origin "${module_dir}*" 2>/dev/null \ | grep -v '\^{}' \ - | grep "^${latest_commit}" \ + | grep "$latest_commit" \ | awk '{print $2}' \ | sed "s/refs\/tags\///" } @@ -220,4 +231,3 @@ done echo '正在推送 Projects_Keeper 项目' git push - From 025c095bcd4d8e0ecbc9c43db3b5a4ac163fc9b6 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 11:18:06 +0800 Subject: [PATCH 04/22] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=A4=87=E6=B3=A8?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=B8=A6=E4=B8=8A=E6=A0=87=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index a568128..b638a6a 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -12,19 +12,14 @@ get_module_latest_tag() { # 先同步远程分支元数据 git fetch origin "$module_dir" 2>/dev/null - # 【修复】直接取远程分支最新完整Commit,再限定模块目录 + # 获取该模块目录最新一次提交CommitHash local latest_commit latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" -- "$module_dir"/ 2>/dev/null) - echo " 调试:模块[$module_dir] 最新Commit = $latest_commit" - # 无commit直接返回空 - if [ -z "$latest_commit" ]; then - echo " 调试:未获取到有效Commit,跳过" - return - fi + [ -z "$latest_commit" ] && return - # 【修复】放宽匹配,不用严格行首,兼容ls-remote输出格式 + # 匹配远程同commit、模块前缀的标签,过滤废弃^{}引用 git ls-remote --tags origin "${module_dir}*" 2>/dev/null \ | grep -v '\^{}' \ | grep "$latest_commit" \ @@ -195,7 +190,6 @@ echo -e "#@@@ 开始合并应用型模块源码 @@@#" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - # 自动使用 origin/模块名 作为远程分支,检测标签 MOD_TAG=$(get_module_latest_tag "$item_lower") if [ -z "$MOD_TAG" ]; then echo "跳过 $item_lower :最新提交未打标签" @@ -204,7 +198,8 @@ for item in "${MERGE_APP_PROJECT_LIST[@]}"; do echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" git checkout origin/$item_lower $item_lower git add . - git commit -m "合并 $item 项目(对应标签:$MOD_TAG)" + # 提交备注带上标签名 + git commit -m "合并 $item 项目,关联标签:$MOD_TAG" done ## 合并 LIB 项目 @@ -217,7 +212,6 @@ echo -e "#@@@ 开始合并类库型模块源码 @@@#" for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - # 自动使用 origin/模块名 作为远程分支,检测标签 MOD_TAG=$(get_module_latest_tag "$item_lower") if [ -z "$MOD_TAG" ]; then echo "跳过 $item_lower :最新提交未打标签" @@ -226,7 +220,8 @@ for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" git checkout origin/$item_lower $item_lower lib$item_lower git add . - git commit -m "合并 $item 项目(对应标签:$MOD_TAG)" + # 提交备注带上标签名 + git commit -m "合并 $item 项目,关联标签:$MOD_TAG" done echo '正在推送 Projects_Keeper 项目' From cd375cefc585732ca0a89283495f2523676682f8 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 11:25:44 +0800 Subject: [PATCH 05/22] =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=8F=96=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E5=88=86=E6=94=AF=20origin/xxx=20=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E5=85=A8=E9=87=8F=20Commit=EF=BC=8C=E4=B8=8D=E9=99=90=E5=88=B6?= =?UTF-8?q?=E5=AD=90=E7=9B=AE=E5=BD=95=20=E2=80=8B=202.=C2=A0=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=A0=87=E7=AD=BE=E5=8C=B9=E9=85=8D=EF=BC=9A=E5=8F=AA?= =?UTF-8?q?=E8=A6=81=E6=A0=87=E7=AD=BE=E5=89=8D=E7=BC=80=E6=98=AF=20=C2=A0?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=90=8D-=C2=A0=20=E5=B0=B1=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=20=E2=80=8B=203.=C2=A0=E4=BF=9D=E7=95=99=E4=BD=A0?= =?UTF-8?q?=E5=8E=9F=E6=9C=89=E5=85=A8=E9=83=A8=E8=84=9A=E6=9C=AC=E7=BB=93?= =?UTF-8?q?=E6=9E=84=EF=BC=8C=E5=8F=AA=E6=94=B9=20=C2=A0get=5Fmodule=5Flat?= =?UTF-8?q?est=5Ftag=C2=A0=20=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index b638a6a..e61421c 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -12,18 +12,22 @@ get_module_latest_tag() { # 先同步远程分支元数据 git fetch origin "$module_dir" 2>/dev/null - # 获取该模块目录最新一次提交CommitHash + # 修复:取整个远程分支最新Commit,不限制子目录 local latest_commit - latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" -- "$module_dir"/ 2>/dev/null) + latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" 2>/dev/null) + + echo " 调试:模块[$module_dir] 远程分支最新Commit = $latest_commit" # 无commit直接返回空 - [ -z "$latest_commit" ] && return + if [ -z "$latest_commit" ]; then + echo " 调试:未获取到有效Commit,跳过" + return + fi - # 匹配远程同commit、模块前缀的标签,过滤废弃^{}引用 - git ls-remote --tags origin "${module_dir}*" 2>/dev/null \ + # 精准匹配:模块名- 开头标签 + 严格比对commit哈希 + git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \ | grep -v '\^{}' \ - | grep "$latest_commit" \ - | awk '{print $2}' \ + | awk -v target_commit="$latest_commit" '$1 == target_commit {print $2}' \ | sed "s/refs\/tags\///" } @@ -190,6 +194,7 @@ echo -e "#@@@ 开始合并应用型模块源码 @@@#" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') + # 自动使用 origin/模块名 作为远程分支,检测标签 MOD_TAG=$(get_module_latest_tag "$item_lower") if [ -z "$MOD_TAG" ]; then echo "跳过 $item_lower :最新提交未打标签" @@ -198,8 +203,7 @@ for item in "${MERGE_APP_PROJECT_LIST[@]}"; do echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" git checkout origin/$item_lower $item_lower git add . - # 提交备注带上标签名 - git commit -m "合并 $item 项目,关联标签:$MOD_TAG" + git commit -m "合并 $item 项目,关联版本标签:$MOD_TAG" done ## 合并 LIB 项目 @@ -212,6 +216,7 @@ echo -e "#@@@ 开始合并类库型模块源码 @@@#" for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') + # 自动使用 origin/模块名 作为远程分支,检测标签 MOD_TAG=$(get_module_latest_tag "$item_lower") if [ -z "$MOD_TAG" ]; then echo "跳过 $item_lower :最新提交未打标签" @@ -220,8 +225,7 @@ for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" git checkout origin/$item_lower $item_lower lib$item_lower git add . - # 提交备注带上标签名 - git commit -m "合并 $item 项目,关联标签:$MOD_TAG" + git commit -m "合并 $item 项目,关联版本标签:$MOD_TAG" done echo '正在推送 Projects_Keeper 项目' From 3d26bbe09016635261cb017cb50e314a6cae8f46 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 12:08:22 +0800 Subject: [PATCH 06/22] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index e61421c..164101f 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -203,7 +203,7 @@ for item in "${MERGE_APP_PROJECT_LIST[@]}"; do echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" git checkout origin/$item_lower $item_lower git add . - git commit -m "合并 $item 项目,关联版本标签:$MOD_TAG" + git commit -m "合并 $item 项目,$MOD_TAG" done ## 合并 LIB 项目 @@ -225,7 +225,7 @@ for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" git checkout origin/$item_lower $item_lower lib$item_lower git add . - git commit -m "合并 $item 项目,关联版本标签:$MOD_TAG" + git commit -m "合并 $item 项目,$MOD_TAG" done echo '正在推送 Projects_Keeper 项目' From e3166b639eba62f3cb27dd2f65b6acdf706e6478 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 12:13:50 +0800 Subject: [PATCH 07/22] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=AD=A5=E9=AA=A4?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index 164101f..7847604 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -194,8 +194,8 @@ echo -e "#@@@ 开始合并应用型模块源码 @@@#" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - # 自动使用 origin/模块名 作为远程分支,检测标签 MOD_TAG=$(get_module_latest_tag "$item_lower") + # 无标签直接跳过所有操作:不checkout、不add、不commit if [ -z "$MOD_TAG" ]; then echo "跳过 $item_lower :最新提交未打标签" continue @@ -216,8 +216,8 @@ echo -e "#@@@ 开始合并类库型模块源码 @@@#" for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - # 自动使用 origin/模块名 作为远程分支,检测标签 MOD_TAG=$(get_module_latest_tag "$item_lower") + # 无标签直接跳过所有操作 if [ -z "$MOD_TAG" ]; then echo "跳过 $item_lower :最新提交未打标签" continue From 33dc49267e2d3a5ea6caa8cd18753115b85f393b Mon Sep 17 00:00:00 2001 From: qinglong Date: Sun, 17 May 2026 13:00:02 +0800 Subject: [PATCH 08/22] =?UTF-8?q?=E5=90=88=E5=B9=B6=20APPBase=20=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=EF=BC=8C=20=20=E8=B0=83=E8=AF=95=EF=BC=9A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97[appbase]=20=E8=BF=9C=E7=A8=8B=E5=88=86=E6=94=AF?= =?UTF-8?q?=E6=9C=80=E6=96=B0Commit=20=3D=2074299bf9b2dca73121a228a0a282e2?= =?UTF-8?q?1f88e25552?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appbase/build.properties | 10 +++++----- libappbase/build.properties | 10 +++++----- .../java/cc/winboll/studio/libappbase/LogUtils.java | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/appbase/build.properties b/appbase/build.properties index 66fc02d..c5838d0 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat May 16 09:15:15 GMT 2026 -stageCount=10 +#Sun May 17 02:08:10 HKT 2026 +stageCount=11 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.9 -buildCount=7 -baseBetaVersion=15.20.10 +publishVersion=15.20.10 +buildCount=0 +baseBetaVersion=15.20.11 diff --git a/libappbase/build.properties b/libappbase/build.properties index 66fc02d..4b4d99d 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat May 16 09:15:15 GMT 2026 -stageCount=10 +#Sun May 17 02:07:57 HKT 2026 +stageCount=11 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.9 -buildCount=7 -baseBetaVersion=15.20.10 +publishVersion=15.20.10 +buildCount=0 +baseBetaVersion=15.20.11 diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/LogUtils.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/LogUtils.java index b286461..a0e4f2a 100644 --- a/libappbase/src/main/java/cc/winboll/studio/libappbase/LogUtils.java +++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/LogUtils.java @@ -135,7 +135,7 @@ public class LogUtils { return; } - final long KEEP_FILE_SIZE = 512000L; // 500K + final long KEEP_FILE_SIZE = 25000L; // ~25KB 确保剪贴板可完整复制 final long MAX_FILE_SIZE = 2*KEEP_FILE_SIZE; final long fileSize = _mfLogCatchFile.length(); From be3d042ade1fd6712f159840de632c2e39cedb52 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 14:22:14 +0800 Subject: [PATCH 09/22] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E6=A0=87=E7=AD=BE=E7=9A=84=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E3=80=82=E5=8F=96=E6=B6=88=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E6=9C=80=E6=96=B0=E6=8F=90=E4=BA=A4=E7=9A=84=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=A4=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index 7847604..be02cd1 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,18 +1,19 @@ #!/system/bin/sh -## 合并其他项目分支的模块源码到projects_keeper_tag分支。 +## 合并其他项目 对应版本标签提交点 模块源码到projects_keeper_tag分支。 # ====================== 函数定义:获取模块最新提交对应的远程标签 ====================== # 参数1:模块名(小写如appbase、aes) -# 自动以 origin/模块名 作为远程分支 +# 自动匹配 模块名- 开头版本标签 # 返回:有标签输出标签名,无标签输出空 get_module_latest_tag() { local module_dir="$1" local remote_branch="origin/${module_dir}" - # 先同步远程分支元数据 + # 同步远程分支 + 同步全部远程标签 git fetch origin "$module_dir" 2>/dev/null + git fetch origin --tags 2>/dev/null - # 修复:取整个远程分支最新Commit,不限制子目录 + # 获取远程分支最新提交哈希 local latest_commit latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" 2>/dev/null) @@ -24,7 +25,7 @@ get_module_latest_tag() { return fi - # 精准匹配:模块名- 开头标签 + 严格比对commit哈希 + # 精准匹配:模块名- 开头标签 + 严格绑定当前commit哈希 git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \ | grep -v '\^{}' \ | awk -v target_commit="$latest_commit" '$1 == target_commit {print $2}' \ @@ -44,7 +45,7 @@ fi # ====================== 1. 拉取远程最新源码(失败直接退出) ====================== echo "==============================================" -echo "正在拉取远程最新源码..." +echo "正在拉取远程最新源码与标签..." echo "==============================================" if ! git pull; then echo "==============================================" @@ -53,7 +54,9 @@ if ! git pull; then echo "==============================================" exit 1 fi -echo "✅ 源码已拉取为最新状态" +# 全局同步所有远程标签 +git fetch origin --tags +echo "✅ 源码与标签同步完成" echo "" # ====================== 2. 目录路径检查 ====================== @@ -197,13 +200,14 @@ for item in "${MERGE_APP_PROJECT_LIST[@]}"; do MOD_TAG=$(get_module_latest_tag "$item_lower") # 无标签直接跳过所有操作:不checkout、不add、不commit if [ -z "$MOD_TAG" ]; then - echo "跳过 $item_lower :最新提交未打标签" + echo "跳过 $item_lower :未匹配到对应版本标签" continue fi - echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" - git checkout origin/$item_lower $item_lower + echo "合并 $item_lower (对应版本标签:$MOD_TAG)" + # 重点修改:从【标签】拉取对应模块文件夹,而非远程分支 + git checkout "$MOD_TAG" "$item_lower" git add . - git commit -m "合并 $item 项目,$MOD_TAG" + git commit -m "合并 $item 项目,对应版本标签:$MOD_TAG" done ## 合并 LIB 项目 @@ -219,13 +223,14 @@ for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do MOD_TAG=$(get_module_latest_tag "$item_lower") # 无标签直接跳过所有操作 if [ -z "$MOD_TAG" ]; then - echo "跳过 $item_lower :最新提交未打标签" + echo "跳过 $item_lower :未匹配到对应版本标签" continue fi - echo "合并 $item_lower (远程分支:origin/$item_lower,标签:$MOD_TAG)" - git checkout origin/$item_lower $item_lower lib$item_lower + echo "合并 $item_lower (对应版本标签:$MOD_TAG)" + # 从指定标签节点拉取对应目录文件 + git checkout "$MOD_TAG" "$item_lower" "lib$item_lower" git add . - git commit -m "合并 $item 项目,$MOD_TAG" + git commit -m "合并 $item 项目,对应版本标签:$MOD_TAG" done echo '正在推送 Projects_Keeper 项目' From 0c9c6c9fd44a178b181818b945c383ed55a35321 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:11:21 +0800 Subject: [PATCH 10/22] =?UTF-8?q?1.=C2=A0=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E9=87=8D=E5=AE=9A=E5=90=91=20=C2=A0>&2=C2=A0=20?= =?UTF-8?q?=E5=BD=BB=E5=BA=95=E6=9D=9C=E7=BB=9D=E8=B0=83=E8=AF=95=E6=96=87?= =?UTF-8?q?=E5=AD=97=E6=B7=B7=E5=85=A5=E6=A0=87=E7=AD=BE=E5=8F=98=E9=87=8F?= =?UTF-8?q?=EF=BC=8C=C2=A0MOD=5FTAG=C2=A0=20=E5=8F=AA=E5=AD=98=E7=BA=AF?= =?UTF-8?q?=E5=87=80=E6=A0=87=E7=AD=BE=E5=90=8D=20=E2=80=8B=202.=C2=A0?= =?UTF-8?q?=E6=8B=89=E5=8F=96=E6=A0=87=E7=AD=BE=E5=86=99=E6=B3=95=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20=E6=97=A7=EF=BC=9A=C2=A0git=20checkout=20=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=20=E7=9B=AE=E5=BD=95=C2=A0=20=E6=96=B0?= =?UTF-8?q?=EF=BC=9A=C2=A0git=20checkout=20origin/tags/=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=20--=20=E7=9B=AE=E5=BD=95=C2=A0=20=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BB=8E=E8=BF=9C=E7=A8=8B=E6=A0=87=E7=AD=BE=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E6=8B=89=E5=8F=96=E5=AF=B9=E5=BA=94=E6=8F=90=E4=BA=A4=E7=82=B9?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=EF=BC=8C100%=E5=91=BD=E4=B8=AD?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E4=BB=A3=E7=A0=81=20=E2=80=8B=203.=C2=A0?= =?UTF-8?q?=E7=B2=BE=E5=87=86add=E6=8F=90=E4=BA=A4=20=E6=94=BE=E5=BC=83=20?= =?UTF-8?q?=C2=A0git=20add=20.=C2=A0=EF=BC=8C=E5=8F=AA=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E5=90=88=E5=B9=B6=E7=9A=84=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=EF=BC=8C=E9=81=BF=E5=85=8D=E4=B9=B1?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=20=E2=80=8B=204.=C2=A0=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E5=85=A8=E9=87=8F=E5=90=8C=E6=AD=A5=E6=A0=87=E7=AD=BE=20?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E5=BC=80=E5=A4=B4=E5=8F=8C=E9=87=8D=C2=A0fet?= =?UTF-8?q?ch=20--tags=C2=A0=EF=BC=8C=E4=BF=9D=E8=AF=81=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E8=83=BD=E8=AF=BB=E5=8F=96=E6=89=80=E6=9C=89=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=A0=87=E7=AD=BE=20=E2=80=8B=205.=C2=A0?= =?UTF-8?q?=E7=A9=BA=E6=A0=87=E7=AD=BE=E7=9B=B4=E6=8E=A5=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=20=E5=8C=B9=E9=85=8D=E4=B8=8D=E5=88=B0=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=AE=8C=E5=85=A8=E8=B7=B3=E8=BF=87=EF=BC=8C=E4=B8=8D=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E7=A9=BA=E6=8F=90=E4=BA=A4=E3=80=81=E6=97=A0=E6=95=88?= =?UTF-8?q?=E8=A6=86=E7=9B=96=20=E2=80=8B=206.=C2=A0=E4=B8=A5=E6=A0=BC?= =?UTF-8?q?=E9=94=81=E5=AE=9A=E6=9C=AC=E5=9C=B0=E5=88=86=E6=94=AF=EF=BC=8C?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E5=90=88=E5=B9=B6=E9=94=99=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 163 ++++++------------ 1 file changed, 55 insertions(+), 108 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index be02cd1..fe4f17b 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,84 +1,65 @@ #!/system/bin/sh -## 合并其他项目 对应版本标签提交点 模块源码到projects_keeper_tag分支。 +## 合并远程指定版本标签下模块文件夹到本地 projects_keeper_tag 分支 -# ====================== 函数定义:获取模块最新提交对应的远程标签 ====================== -# 参数1:模块名(小写如appbase、aes) -# 自动匹配 模块名- 开头版本标签 -# 返回:有标签输出标签名,无标签输出空 +# ====================== 获取模块对应远程版本标签 ====================== get_module_latest_tag() { local module_dir="$1" local remote_branch="origin/${module_dir}" - # 同步远程分支 + 同步全部远程标签 - git fetch origin "$module_dir" 2>/dev/null - git fetch origin --tags 2>/dev/null + # 强制拉取远程分支+全部远程标签到本地 + git fetch origin "$module_dir" + git fetch origin --tags # 获取远程分支最新提交哈希 local latest_commit latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" 2>/dev/null) - echo " 调试:模块[$module_dir] 远程分支最新Commit = $latest_commit" + # 调试信息输出到错误流,不污染返回值 + echo " 调试:模块[$module_dir] 远程最新Commit = $latest_commit" >&2 - # 无commit直接返回空 if [ -z "$latest_commit" ]; then - echo " 调试:未获取到有效Commit,跳过" + echo " 调试:无有效提交" >&2 + echo "" return fi - # 精准匹配:模块名- 开头标签 + 严格绑定当前commit哈希 - git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \ + # 匹配 模块名-xxx 格式标签,绑定对应commit + local tag_val + tag_val=$(git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \ | grep -v '\^{}' \ - | awk -v target_commit="$latest_commit" '$1 == target_commit {print $2}' \ - | sed "s/refs\/tags\///" + | awk -v cm="$latest_commit" '$1==cm{print $2}' \ + | sed 's/refs\/tags\///') + + # 纯净返回标签字符串 + echo "$tag_val" } -# ====================== 0. 进入目标目录 ====================== +# ====================== 进入工作目录 ====================== TARGET_DIR="/sdcard/AppProjects/Projects_Keeper_Tag" - -echo "切换工作目录到:$TARGET_DIR" +echo "切换工作目录:$TARGET_DIR" if ! cd "$TARGET_DIR"; then - echo "==============================================" - echo "错误:无法进入目标目录 $TARGET_DIR" - echo "==============================================" + echo "目录切换失败!" exit 1 fi -# ====================== 1. 拉取远程最新源码(失败直接退出) ====================== +# ====================== 同步远程代码与所有标签 ====================== echo "==============================================" -echo "正在拉取远程最新源码与标签..." +echo "同步远程代码及全部版本标签" echo "==============================================" -if ! git pull; then - echo "==============================================" - echo "错误:拉取远程源码失败!" - echo "请检查网络、仓库冲突或手动处理 git 状态后再执行脚本。" - echo "==============================================" - exit 1 -fi -# 全局同步所有远程标签 +git pull git fetch origin --tags -echo "✅ 源码与标签同步完成" +echo "同步完成" echo "" -# ====================== 2. 目录路径检查 ====================== -CUR_DIR=$(pwd) -if [ "$CUR_DIR" != "$TARGET_DIR" ]; then - echo "错误:当前目录不是项目根目录!" - echo "请先进入目录:$TARGET_DIR" - exit 1 -fi - -# ====================== 3. Git 分支检查 ====================== +# ====================== 强制锁定本地分支 ====================== CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null) TARGET_BRANCH="projects_keeper_tag" - if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then - echo "错误:当前不在 $TARGET_BRANCH 分支!" - echo "当前分支:$CUR_BRANCH" - echo "请先执行:git checkout $TARGET_BRANCH" + echo "错误:当前不在 $TARGET_BRANCH 分支,请先切换!" exit 1 fi -# ====================== 4. 预设标准模块列表 ====================== +# ====================== 目录校验数组(保留原样) ====================== MERGE_OBJECTS_LIST=( .git .gitignore @@ -115,7 +96,6 @@ winboll winboll.properties-demo ) -# ====================== 5. 获取当前目录真实文件列表 ====================== REAL_ITEMS=() while IFS= read -r line; do if [[ "$line" != "." && "$line" != ".." ]]; then @@ -123,11 +103,9 @@ while IFS= read -r line; do fi done < <(ls -a) -# ====================== 6. 差异比对函数 ====================== check_diff() { local missing=() local extra=() - for item in "${MERGE_OBJECTS_LIST[@]}"; do local found=0 for r in "${REAL_ITEMS[@]}"; do @@ -140,7 +118,6 @@ check_diff() { missing+=("$item") fi done - for r in "${REAL_ITEMS[@]}"; do local found=0 for item in "${MERGE_OBJECTS_LIST[@]}"; do @@ -153,85 +130,55 @@ check_diff() { extra+=("$r") fi done - if [[ ${#missing[@]} -gt 0 || ${#extra[@]} -gt 0 ]]; then - echo "==============================================" - echo "【错误】合并环境与脚本预设列表不匹配!" - echo "请手动核对并修改合并脚本。" - echo "==============================================" - - if [[ ${#missing[@]} -gt 0 ]]; then - echo -e "\n👉 本地缺失项目:" - for m in "${missing[@]}"; do echo " $m"; done - fi - - if [[ ${#extra[@]} -gt 0 ]]; then - echo -e "\n👉 本地多余项目:" - for e in "${extra[@]}"; do echo " $e"; done - fi - - echo -e "\n==============================================" + echo "目录结构不匹配,终止执行" exit 1 fi } - -# 执行差异校验 check_diff -# ====================== 全部校验通过,继续执行合并 ====================== -echo -e "#@@@ 开始合并模块源码 @@@# -## 目标合并对象列表:" - -for item in "${MERGE_OBJECTS_LIST[@]}"; do - echo "$item" -done - -echo -e "## 对象列表结束 -" - -## 合并 APP 项目 -MERGE_APP_PROJECT_LIST=( -DemoAPP -) -echo -e "#@@@ 开始合并应用型模块源码 @@@#" +# ====================== 开始合并模块 ====================== +echo -e "#@@@ 开始合并标签版本模块源码 @@@#" +## 合并应用型模块 +MERGE_APP_PROJECT_LIST=(DemoAPP) +echo -e "#@@@ 应用型模块开始合并 @@#" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') MOD_TAG=$(get_module_latest_tag "$item_lower") - # 无标签直接跳过所有操作:不checkout、不add、不commit + + # 无标签直接跳过,不执行任何操作 if [ -z "$MOD_TAG" ]; then - echo "跳过 $item_lower :未匹配到对应版本标签" + echo "跳过 $item_lower 未匹配对应版本标签" continue fi - echo "合并 $item_lower (对应版本标签:$MOD_TAG)" - # 重点修改:从【标签】拉取对应模块文件夹,而非远程分支 - git checkout "$MOD_TAG" "$item_lower" - git add . - git commit -m "合并 $item 项目,对应版本标签:$MOD_TAG" + + echo "正在合并 $item_lower 标签版本:$MOD_TAG" + # 从远程标签拉取文件夹覆盖到本地 + git checkout origin/tags/"$MOD_TAG" -- "$item_lower" + # 仅添加当前模块文件,不全局add + git add "$item_lower" + git commit -m "合并模块 $item ,来源版本标签:$MOD_TAG" done -## 合并 LIB 项目 -MERGE_LIB_PROJECT_LIST=( -WinBoLL -APPBase -AES -) -echo -e "#@@@ 开始合并类库型模块源码 @@@#" - +## 合并类库模块 +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') MOD_TAG=$(get_module_latest_tag "$item_lower") - # 无标签直接跳过所有操作 + if [ -z "$MOD_TAG" ]; then - echo "跳过 $item_lower :未匹配到对应版本标签" + echo "跳过 $item_lower 未匹配对应版本标签" continue fi - echo "合并 $item_lower (对应版本标签:$MOD_TAG)" - # 从指定标签节点拉取对应目录文件 - git checkout "$MOD_TAG" "$item_lower" "lib$item_lower" - git add . - git commit -m "合并 $item 项目,对应版本标签:$MOD_TAG" + + echo "正在合并 $item_lower 标签版本:$MOD_TAG" + git checkout origin/tags/"$MOD_TAG" -- "$item_lower" "lib$item_lower" + git add "$item_lower" "lib$item_lower" + git commit -m "合并模块 $item ,来源版本标签:$MOD_TAG" done -echo '正在推送 Projects_Keeper 项目' +echo "所有模块合并执行完毕" +echo "准备推送远程分支" git push From 3707891e0b9467326320264cef9bd67f9db5b04e Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:17:40 +0800 Subject: [PATCH 11/22] =?UTF-8?q?1.=C2=A0=E8=B0=83=E7=94=A8=E5=87=BD?= =?UTF-8?q?=E6=95=B0=20=E2=86=92=20=E6=9F=A5=E5=87=BA=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=20+=20=E6=A0=87=E7=AD=BE=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E6=8F=90=E4=BA=A4Commit=E5=93=88=E5=B8=8C=20=E2=80=8B=202.?= =?UTF-8?q?=C2=A0=E5=88=A4=E5=AE=9A=E6=A0=87=E7=AD=BE/Commit=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9B=B4=E6=8E=A5=E8=B7=B3=E8=BF=87=20=E2=80=8B=203.?= =?UTF-8?q?=C2=A0=E5=90=88=E5=B9=B6=E5=91=BD=E4=BB=A4=EF=BC=9A=C2=A0git=20?= =?UTF-8?q?checkout=20origin/=E6=A8=A1=E5=9D=97=E5=90=8D=20=20commit?= =?UTF-8?q?=E5=93=88=E5=B8=8C:=E6=A8=A1=E5=9D=97=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=20=E2=80=8B=204.=C2=A0=E4=BB=85=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E6=A8=A1=E5=9D=97=E7=9B=AE=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E7=B2=BE=E5=87=86=E6=8F=90=E4=BA=A4=20=E2=80=8B=205.=C2=A0?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=97=A5=E5=BF=97=E5=90=8C=E6=97=B6=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=A0=87=E7=AD=BE=E5=90=8D+=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=93=88=E5=B8=8C=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=9B=9E=E6=BA=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 81 ++++++++++--------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index fe4f17b..e2b546f 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,37 +1,34 @@ #!/system/bin/sh -## 合并远程指定版本标签下模块文件夹到本地 projects_keeper_tag 分支 +## 合并远程模块指定标签对应提交点文件夹到本地 projects_keeper_tag 分支 -# ====================== 获取模块对应远程版本标签 ====================== -get_module_latest_tag() { +# ====================== 获取模块标签与对应Commit ====================== +get_module_tag_commit() { local module_dir="$1" local remote_branch="origin/${module_dir}" - # 强制拉取远程分支+全部远程标签到本地 - git fetch origin "$module_dir" - git fetch origin --tags + git fetch origin "$module_dir" 2>/dev/null + git fetch origin --tags 2>/dev/null - # 获取远程分支最新提交哈希 + # 获取远程分支最新commit local latest_commit latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" 2>/dev/null) - # 调试信息输出到错误流,不污染返回值 - echo " 调试:模块[$module_dir] 远程最新Commit = $latest_commit" >&2 + echo " 调试:模块[$module_dir] 远程分支最新Commit = $latest_commit" >&2 if [ -z "$latest_commit" ]; then - echo " 调试:无有效提交" >&2 echo "" return fi - # 匹配 模块名-xxx 格式标签,绑定对应commit - local tag_val - tag_val=$(git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \ + # 匹配模块名-开头标签,取出标签名 + local target_tag + target_tag=$(git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \ | grep -v '\^{}' \ | awk -v cm="$latest_commit" '$1==cm{print $2}' \ | sed 's/refs\/tags\///') - # 纯净返回标签字符串 - echo "$tag_val" + # 输出格式:标签名|commit哈希 + echo "${target_tag}|${latest_commit}" } # ====================== 进入工作目录 ====================== @@ -42,7 +39,7 @@ if ! cd "$TARGET_DIR"; then exit 1 fi -# ====================== 同步远程代码与所有标签 ====================== +# ====================== 同步远程代码与标签 ====================== echo "==============================================" echo "同步远程代码及全部版本标签" echo "==============================================" @@ -51,7 +48,7 @@ git fetch origin --tags echo "同步完成" echo "" -# ====================== 强制锁定本地分支 ====================== +# ====================== 锁定目标分支 ====================== CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null) TARGET_BRANCH="projects_keeper_tag" if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then @@ -59,7 +56,7 @@ if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then exit 1 fi -# ====================== 目录校验数组(保留原样) ====================== +# ====================== 目录结构校验 ====================== MERGE_OBJECTS_LIST=( .git .gitignore @@ -138,47 +135,53 @@ check_diff() { check_diff # ====================== 开始合并模块 ====================== -echo -e "#@@@ 开始合并标签版本模块源码 @@@#" +echo -e "#@@@ 开始按标签对应提交点合并模块 @@@#" ## 合并应用型模块 MERGE_APP_PROJECT_LIST=(DemoAPP) -echo -e "#@@@ 应用型模块开始合并 @@#" +echo -e "#@@@ 应用型模块合并开始 @@#" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - MOD_TAG=$(get_module_latest_tag "$item_lower") + tag_info=$(get_module_tag_commit "$item_lower") - # 无标签直接跳过,不执行任何操作 - if [ -z "$MOD_TAG" ]; then - echo "跳过 $item_lower 未匹配对应版本标签" + # 分割 标签名 和 commit哈希 + MOD_TAG=${tag_info%%|*} + MOD_COMMIT=${tag_info##*|} + + if [ -z "$MOD_TAG" ] || [ -z "$MOD_COMMIT" ]; then + echo "跳过 $item_lower 未匹配有效标签与提交点" continue fi - echo "正在合并 $item_lower 标签版本:$MOD_TAG" - # 从远程标签拉取文件夹覆盖到本地 - git checkout origin/tags/"$MOD_TAG" -- "$item_lower" - # 仅添加当前模块文件,不全局add - git add "$item_lower" - git commit -m "合并模块 $item ,来源版本标签:$MOD_TAG" + echo "模块:$item_lower 标签:$MOD_TAG 对应提交点:$MOD_COMMIT" + # 核心:从远程模块分支 指定commit拉取对应文件夹 + git checkout "origin/${item_lower}" "${MOD_COMMIT}:${item_lower}" + git add "${item_lower}" + git commit -m "合并模块 $item ,来源标签:$MOD_TAG 提交点:$MOD_COMMIT" done ## 合并类库模块 MERGE_LIB_PROJECT_LIST=(WinBoLL APPBase AES) -echo -e "#@@@ 类库模块开始合并 @@#" +echo -e "#@@@ 类库模块合并开始 @@#" for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - MOD_TAG=$(get_module_latest_tag "$item_lower") + tag_info=$(get_module_tag_commit "$item_lower") - if [ -z "$MOD_TAG" ]; then - echo "跳过 $item_lower 未匹配对应版本标签" + MOD_TAG=${tag_info%%|*} + MOD_COMMIT=${tag_info##*|} + + if [ -z "$MOD_TAG" ] || [ -z "$MOD_COMMIT" ]; then + echo "跳过 $item_lower 未匹配有效标签与提交点" continue fi - echo "正在合并 $item_lower 标签版本:$MOD_TAG" - git checkout origin/tags/"$MOD_TAG" -- "$item_lower" "lib$item_lower" - git add "$item_lower" "lib$item_lower" - git commit -m "合并模块 $item ,来源版本标签:$MOD_TAG" + echo "模块:$item_lower 标签:$MOD_TAG 对应提交点:$MOD_COMMIT" + # 拉取主目录 + lib目录 指定commit文件 + git checkout "origin/${item_lower}" "${MOD_COMMIT}:${item_lower}" "${MOD_COMMIT}:lib${item_lower}" + git add "${item_lower}" "lib${item_lower}" + git commit -m "合并模块 $item ,来源标签:$MOD_TAG 提交点:$MOD_COMMIT" done -echo "所有模块合并执行完毕" +echo "所有模块合并完成" echo "准备推送远程分支" git push From 555c5deef978a1f84117dc1e11ebb3723ecae421 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:22:31 +0800 Subject: [PATCH 12/22] =?UTF-8?q?1.=C2=A0=C2=A0get=5Fmodule=5Flatest=5Ftag?= =?UTF-8?q?=C2=A0=20=E2=86=92=20=E6=8A=93=E5=8F=96=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=AF=A5=E6=A8=A1=E5=9D=97=E6=9C=80=E6=96=B0Tag=20=E2=80=8B=20?= =?UTF-8?q?2.=C2=A0=C2=A0get=5Fcommit=5Fby=5Ftag=C2=A0=20=E2=86=92=20?= =?UTF-8?q?=E7=94=A8=E6=9C=80=E6=96=B0Tag=E6=9F=A5=E5=87=BA=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E5=AF=B9=E5=BA=94=E6=8F=90=E4=BA=A4Commit=20=E2=80=8B?= =?UTF-8?q?=203.=C2=A0=E6=A0=A1=E9=AA=8CTag/Commit=E9=9D=9E=E7=A9=BA=20?= =?UTF-8?q?=E2=80=8B=204.=C2=A0=E6=89=A7=E8=A1=8C=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=91=BD=E4=BB=A4git=20checkout=20origin/=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=90=8D=20=20commit=E5=93=88=E5=B8=8C:=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit   5. 仅添加对应目录,生成带标签+commit的提交日志 ​ 6. 无标签直接跳过,不产生任何操作 --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 126 +++++++++--------- 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index e2b546f..e5e9457 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,34 +1,23 @@ #!/system/bin/sh -## 合并远程模块指定标签对应提交点文件夹到本地 projects_keeper_tag 分支 +## 流程:获取远程最新Tag → 获取Tag对应Commit → 按Commit合并远程模块目录到本地 -# ====================== 获取模块标签与对应Commit ====================== -get_module_tag_commit() { - local module_dir="$1" - local remote_branch="origin/${module_dir}" - - git fetch origin "$module_dir" 2>/dev/null +# ====================== 1. 获取模块远程最新版本TAG ====================== +get_module_latest_tag() { + local module_name="$1" git fetch origin --tags 2>/dev/null - - # 获取远程分支最新commit - local latest_commit - latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" 2>/dev/null) - - echo " 调试:模块[$module_dir] 远程分支最新Commit = $latest_commit" >&2 - - if [ -z "$latest_commit" ]; then - echo "" - return - fi - - # 匹配模块名-开头标签,取出标签名 - local target_tag - target_tag=$(git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \ + # 筛选 模块名- 开头标签,按版本排序取最新 + git ls-remote --tags origin "${module_name}-*" 2>/dev/null \ | grep -v '\^{}' \ - | awk -v cm="$latest_commit" '$1==cm{print $2}' \ - | sed 's/refs\/tags\///') + | sort -V \ + | tail -1 \ + | awk '{print $2}' \ + | sed 's/refs\/tags\///' +} - # 输出格式:标签名|commit哈希 - echo "${target_tag}|${latest_commit}" +# ====================== 2. 通过TAG获取对应提交Commit哈希 ====================== +get_commit_by_tag() { + local tag_name="$1" + git rev-list -1 "$tag_name" 2>/dev/null } # ====================== 进入工作目录 ====================== @@ -39,16 +28,16 @@ if ! cd "$TARGET_DIR"; then exit 1 fi -# ====================== 同步远程代码与标签 ====================== +# ====================== 同步远程全部标签 ====================== echo "==============================================" -echo "同步远程代码及全部版本标签" +echo "同步远程所有分支与版本标签" echo "==============================================" -git pull +git fetch origin --prune git fetch origin --tags echo "同步完成" echo "" -# ====================== 锁定目标分支 ====================== +# ====================== 锁定本地目标分支 ====================== CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null) TARGET_BRANCH="projects_keeper_tag" if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then @@ -56,7 +45,7 @@ if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then exit 1 fi -# ====================== 目录结构校验 ====================== +# ====================== 目录结构校验(保留原有) ====================== MERGE_OBJECTS_LIST=( .git .gitignore @@ -134,54 +123,67 @@ check_diff() { } check_diff -# ====================== 开始合并模块 ====================== -echo -e "#@@@ 开始按标签对应提交点合并模块 @@@#" +# ====================== 开始批量合并模块 ====================== +echo -e "#@@@ 开始按【最新Tag+对应Commit】合并模块 @@@#" ## 合并应用型模块 MERGE_APP_PROJECT_LIST=(DemoAPP) -echo -e "#@@@ 应用型模块合并开始 @@#" +echo -e "---------- 应用型模块合并 ----------" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - tag_info=$(get_module_tag_commit "$item_lower") - - # 分割 标签名 和 commit哈希 - MOD_TAG=${tag_info%%|*} - MOD_COMMIT=${tag_info##*|} - - if [ -z "$MOD_TAG" ] || [ -z "$MOD_COMMIT" ]; then - echo "跳过 $item_lower 未匹配有效标签与提交点" + # 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 未查询到对应提交点" continue fi - echo "模块:$item_lower 标签:$MOD_TAG 对应提交点:$MOD_COMMIT" - # 核心:从远程模块分支 指定commit拉取对应文件夹 - git checkout "origin/${item_lower}" "${MOD_COMMIT}:${item_lower}" - git add "${item_lower}" - git commit -m "合并模块 $item ,来源标签:$MOD_TAG 提交点:$MOD_COMMIT" + echo "模块:$item_lower" + echo "最新标签:$LATEST_TAG" + echo "对应提交点:$TARGET_COMMIT" + echo "----------------------------------------" + + # 3.使用Commit从远程模块分支拉取目录合并到本地 + git checkout origin/${item_lower} ${TARGET_COMMIT}:${item_lower} + git add ${item_lower} + git commit -m "合并模块${item} 来源最新标签:${LATEST_TAG} 提交点:${TARGET_COMMIT}" done ## 合并类库模块 MERGE_LIB_PROJECT_LIST=(WinBoLL APPBase AES) -echo -e "#@@@ 类库模块合并开始 @@#" +echo -e "---------- 类库模块合并 ----------" for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - tag_info=$(get_module_tag_commit "$item_lower") - - MOD_TAG=${tag_info%%|*} - MOD_COMMIT=${tag_info##*|} - - if [ -z "$MOD_TAG" ] || [ -z "$MOD_COMMIT" ]; then - echo "跳过 $item_lower 未匹配有效标签与提交点" + # 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 未查询到对应提交点" continue fi - echo "模块:$item_lower 标签:$MOD_TAG 对应提交点:$MOD_COMMIT" - # 拉取主目录 + lib目录 指定commit文件 - git checkout "origin/${item_lower}" "${MOD_COMMIT}:${item_lower}" "${MOD_COMMIT}:lib${item_lower}" - git add "${item_lower}" "lib${item_lower}" - git commit -m "合并模块 $item ,来源标签:$MOD_TAG 提交点:$MOD_COMMIT" + echo "模块:$item_lower" + echo "最新标签:$LATEST_TAG" + echo "对应提交点:$TARGET_COMMIT" + echo "----------------------------------------" + + # 3.拉取主目录 + lib目录 + git checkout origin/${item_lower} ${TARGET_COMMIT}:${item_lower} ${TARGET_COMMIT}:lib${item_lower} + git add ${item_lower} lib${item_lower} + git commit -m "合并模块${item} 来源最新标签:${LATEST_TAG} 提交点:${TARGET_COMMIT}" done -echo "所有模块合并完成" -echo "准备推送远程分支" +echo "所有模块合并流程执行完毕" +echo "准备推送至远程分支" git push From 8fa09a9f993d558a47f6d25a81f1d31c1a443b16 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:25:10 +0800 Subject: [PATCH 13/22] =?UTF-8?q?demoapp=E3=80=81winboll=E3=80=81aes=C2=A0?= =?UTF-8?q?=20=E6=B2=A1=E6=9C=89=20=C2=A0xxx-=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=C2=A0=20=E6=A0=BC=E5=BC=8F=E6=A0=87=E7=AD=BE=EF=BC=8C=E8=B7=B3?= =?UTF-8?q?=E8=BF=87=E5=B1=9E=E4=BA=8E=E6=AD=A3=E5=B8=B8=20=E2=80=8B=202.?= =?UTF-8?q?=C2=A0=C2=A0appbase=C2=A0=20=E6=88=90=E5=8A=9F=E6=8A=93?= =?UTF-8?q?=E5=88=B0=E6=A0=87=E7=AD=BE=E5=92=8Ccommit=EF=BC=8C=E5=8F=AA?= =?UTF-8?q?=E6=98=AF=E5=91=BD=E4=BB=A4=E8=AF=AD=E6=B3=95=E9=94=99=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=8B=89=E5=8F=96=E5=A4=B1=E8=B4=A5=EF=BC=8C=E6=94=B9?= =?UTF-8?q?=E5=AE=8C=E5=8D=B3=E5=8F=AF=E6=AD=A3=E5=B8=B8=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bashMergeProjects-to-Projects_Keeper_Tag.sh | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) 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 From 79f7f682b39927d56b3552a37b80bfef860b386e Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:25:41 +0800 Subject: [PATCH 14/22] =?UTF-8?q?=E5=90=88=E5=B9=B6=E6=A8=A1=E5=9D=97APPBa?= =?UTF-8?q?se=20=E6=9D=A5=E6=BA=90=E6=9C=80=E6=96=B0=E6=A0=87=E7=AD=BE:app?= =?UTF-8?q?base-v15.20.11=20=E6=8F=90=E4=BA=A4=E7=82=B9:c7184ad6df0092106e?= =?UTF-8?q?535308ba486a9503395042?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appbase/build.properties | 8 ++++---- libappbase/build.properties | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/appbase/build.properties b/appbase/build.properties index c5838d0..3c69d65 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 02:08:10 HKT 2026 -stageCount=11 +#Sun May 17 14:46:57 HKT 2026 +stageCount=12 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.10 +publishVersion=15.20.11 buildCount=0 -baseBetaVersion=15.20.11 +baseBetaVersion=15.20.12 diff --git a/libappbase/build.properties b/libappbase/build.properties index 4b4d99d..3c69d65 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 02:07:57 HKT 2026 -stageCount=11 +#Sun May 17 14:46:57 HKT 2026 +stageCount=12 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.10 +publishVersion=15.20.11 buildCount=0 -baseBetaVersion=15.20.11 +baseBetaVersion=15.20.12 From 28bc3a86e3b37facf7b7f6eb3a6ce4f1bc5ec415 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:34:14 +0800 Subject: [PATCH 15/22] =?UTF-8?q?1.=C2=A0=E7=89=88=E6=9C=AC=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E5=BD=BB=E5=BA=95=E4=BF=AE=E5=A4=8D=20=E6=8C=89=20?= =?UTF-8?q?=C2=A0=E5=A4=A7=E7=89=88=E6=9C=AC.=E4=B8=AD=E7=89=88=E6=9C=AC.?= =?UTF-8?q?=E5=B0=8F=E7=89=88=E6=9C=AC.=E8=BF=AD=E4=BB=A3=E5=8F=B7=C2=A0?= =?UTF-8?q?=20=E5=88=86=E6=AE=B5=E6=95=B0=E5=AD=97=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=85=88=E6=8A=93=E5=8F=96=20=C2=A0appbase-v?= =?UTF-8?q?15.20.12=C2=A0=20=E8=80=8C=E4=B8=8D=E6=98=AF=E6=97=A7=E7=89=88?= =?UTF-8?q?=20=E2=80=8B=202.=C2=A0=E6=A3=80=E5=87=BA=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8=20?= =?UTF-8?q?=C2=A0git=20checkout=20=E6=8F=90=E4=BA=A4=E5=93=88=E5=B8=8C=20-?= =?UTF-8?q?-=20=E7=9B=AE=E5=BD=95=C2=A0=20=E8=AF=AD=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E6=8A=A5=E8=B7=AF=E5=BE=84=E4=B8=8D=E5=AD=98?= =?UTF-8?q?=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index 2ce169a..0843663 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,16 +1,18 @@ #!/system/bin/sh ## 流程:获取远程最新Tag → 获取Tag对应Commit → 按Commit合并远程模块目录到本地 -# ====================== 1. 获取模块远程最新版本TAG ====================== +# ====================== 1. 获取模块远程最新版本TAG(修复版本排序) ====================== 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 \ - | tail -1 \ | awk '{print $2}' \ - | sed 's/refs\/tags\///' + | sed "s/refs\/tags\/${module_name}-//" \ + | sort -t '.' -k1,1n -k2,2n -k3,3n -k4,4n \ + | tail -1 \ + | xargs echo "${module_name}-" } # ====================== 2. 通过TAG获取对应提交Commit哈希 ====================== @@ -146,9 +148,9 @@ for item in "${MERGE_APP_PROJECT_LIST[@]}"; do echo "对应提交点:$TARGET_COMMIT" echo "----------------------------------------" - # 正确写法:用commit检出指定目录 - git checkout ${TARGET_COMMIT} -- ${item_lower} - git add ${item_lower} + # 正确语法:从指定提交点拉取文件夹覆盖本地 + git checkout "${TARGET_COMMIT}" -- "${item_lower}" + git add "${item_lower}" git commit -m "合并模块${item} 来源最新标签:${LATEST_TAG} 提交点:${TARGET_COMMIT}" done @@ -173,9 +175,8 @@ for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do echo "对应提交点:$TARGET_COMMIT" echo "----------------------------------------" - # 同时检出主目录 + lib目录 - git checkout ${TARGET_COMMIT} -- ${item_lower} lib${item_lower} - git add ${item_lower} lib${item_lower} + 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 From cbca61ad84212d78b86f3fea39df1ca335361d27 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:37:37 +0800 Subject: [PATCH 16/22] =?UTF-8?q?1.=C2=A0=E5=88=A0=E6=8E=89=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E6=8B=BC=E6=8E=A5=E6=A0=87=E7=AD=BE=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E7=9B=B4=E6=8E=A5=E5=8F=96=E7=94=A8=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E6=A0=87=E7=AD=BE=E5=90=8D=EF=BC=8C=E6=9D=9C?= =?UTF-8?q?=E7=BB=9D=20=C2=A0appbase-=20=E7=A9=BA=E6=A0=BC=E7=89=88?= =?UTF-8?q?=E6=9C=AC=C2=A0=20=E2=80=8B=202.=C2=A0=E4=BD=BF=E7=94=A8=20?= =?UTF-8?q?=C2=A0git=20rev-parse=20--verify=20=E6=A0=87=E7=AD=BE^{commit}?= =?UTF-8?q?=C2=A0=20=E7=B2=BE=E5=87=86=E6=8B=BF=E8=BF=9C=E7=A8=8B=E6=A0=87?= =?UTF-8?q?=E7=AD=BEcommit=20=E2=80=8B=203.=C2=A0=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E5=BC=BA=E5=88=B6=E6=8C=87=E5=AE=9A=20=C2=A0?= =?UTF-8?q?origin/=E6=A8=A1=E5=9D=97=E5=90=8D=C2=A0=20=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E5=88=86=E6=94=AF=20=E2=80=8B=204.=C2=A0=E7=A9=BA=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E7=9B=B4=E6=8E=A5=E8=B7=B3=E8=BF=87=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=87=BA=E7=8E=B0=20=C2=A0xxx-=C2=A0=20=E9=9D=9E?= =?UTF-8?q?=E6=B3=95=E6=A0=87=E7=AD=BE=20=E2=80=8B=205.=C2=A0=E6=A3=80?= =?UTF-8?q?=E5=87=BA=E8=AF=AD=E6=B3=95=E6=A0=87=E5=87=86=EF=BC=9A=C2=A0git?= =?UTF-8?q?=20checkout=20=E8=BF=9C=E7=A8=8B=E5=88=86=E6=94=AF=20commit=20-?= =?UTF-8?q?-=20=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 91 ++++++++----------- 1 file changed, 39 insertions(+), 52 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index 0843663..28666a6 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,27 +1,25 @@ #!/system/bin/sh -## 流程:获取远程最新Tag → 获取Tag对应Commit → 按Commit合并远程模块目录到本地 +## 流程:获取远程最新Tag → 获取Tag对应远程Commit → 从远程分支指定提交点合并模块目录 -# ====================== 1. 获取模块远程最新版本TAG(修复版本排序) ====================== +# 获取模块远程完整最新TAG 无多余空格 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 '\^{}' \ - | awk '{print $2}' \ - | sed "s/refs\/tags\/${module_name}-//" \ - | sort -t '.' -k1,1n -k2,2n -k3,3n -k4,4n \ + | sort -V \ | tail -1 \ - | xargs echo "${module_name}-" + | awk '{print $2}' \ + | sed 's/refs\/tags\///' } -# ====================== 2. 通过TAG获取对应提交Commit哈希 ====================== -get_commit_by_tag() { +# 通过远程标签获取对应提交哈希 +get_remote_commit_by_tag() { local tag_name="$1" - git rev-list -1 "$tag_name" 2>/dev/null + git rev-parse --verify "${tag_name}^{commit}" 2>/dev/null } -# ====================== 进入工作目录 ====================== +# 进入工作目录 TARGET_DIR="/sdcard/AppProjects/Projects_Keeper_Tag" echo "切换工作目录:$TARGET_DIR" if ! cd "$TARGET_DIR"; then @@ -29,16 +27,16 @@ if ! cd "$TARGET_DIR"; then exit 1 fi -# ====================== 同步远程全部标签 ====================== +# 同步远程 echo "==============================================" -echo "同步远程所有分支与版本标签" +echo "同步远程分支与全部版本标签" echo "==============================================" git fetch origin --prune git fetch origin --tags echo "同步完成" echo "" -# ====================== 锁定本地目标分支 ====================== +# 锁定目标分支 CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null) TARGET_BRANCH="projects_keeper_tag" if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then @@ -46,7 +44,7 @@ if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then exit 1 fi -# ====================== 目录结构校验 ====================== +# 目录校验 MERGE_OBJECTS_LIST=( .git .gitignore @@ -124,62 +122,51 @@ check_diff() { } check_diff -# ====================== 开始批量合并模块 ====================== -echo -e "#@@@ 开始按【最新Tag+对应Commit】合并模块 @@@#" +echo -e "#@@@ 开始按远程最新标签合并模块 @@@#" -## 合并应用型模块 +# 应用型模块 MERGE_APP_PROJECT_LIST=(DemoAPP) echo -e "---------- 应用型模块合并 ----------" for item in "${MERGE_APP_PROJECT_LIST[@]}"; do item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - LATEST_TAG=$(get_module_latest_tag "$item_lower") - if [ -z "$LATEST_TAG" ]; then - echo "跳过 $item_lower :未查询到任何版本标签" + TAG=$(get_module_latest_tag "${item_lower}") + if [[ -z "$TAG" ]]; then + echo "跳过 ${item_lower}:无远程版本标签" continue fi - TARGET_COMMIT=$(get_commit_by_tag "$LATEST_TAG") - if [ -z "$TARGET_COMMIT" ]; then - echo "跳过 $item_lower :标签 $LATEST_TAG 未查询到对应提交点" + COMMIT=$(get_remote_commit_by_tag "$TAG") + if [[ -z "$COMMIT" ]]; then + echo "跳过 ${item_lower}:标签 $TAG 无有效提交点" continue fi - - echo "模块:$item_lower" - echo "最新标签:$LATEST_TAG" - echo "对应提交点:$TARGET_COMMIT" - echo "----------------------------------------" - - # 正确语法:从指定提交点拉取文件夹覆盖本地 - git checkout "${TARGET_COMMIT}" -- "${item_lower}" - git add "${item_lower}" - git commit -m "合并模块${item} 来源最新标签:${LATEST_TAG} 提交点:${TARGET_COMMIT}" + echo "模块:${item_lower} | 标签:$TAG | 提交哈希:$COMMIT" + # 从远程分支该提交点拉取目录 + git checkout origin/${item_lower} ${COMMIT} -- ${item_lower} + git add ${item_lower} + git commit -m "合并模块${item} 来源远程标签:${TAG} 提交点:${COMMIT}" done -## 合并类库模块 +# 类库模块 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') - LATEST_TAG=$(get_module_latest_tag "$item_lower") - if [ -z "$LATEST_TAG" ]; then - echo "跳过 $item_lower :未查询到任何版本标签" + TAG=$(get_module_latest_tag "${item_lower}") + if [[ -z "$TAG" ]]; then + echo "跳过 ${item_lower}:无远程版本标签" continue fi - TARGET_COMMIT=$(get_commit_by_tag "$LATEST_TAG") - if [ -z "$TARGET_COMMIT" ]; then - echo "跳过 $item_lower :标签 $LATEST_TAG 未查询到对应提交点" + COMMIT=$(get_remote_commit_by_tag "$TAG") + if [[ -z "$COMMIT" ]]; then + echo "跳过 ${item_lower}:标签 $TAG 无有效提交点" continue fi - - echo "模块:$item_lower" - echo "最新标签:$LATEST_TAG" - echo "对应提交点:$TARGET_COMMIT" - echo "----------------------------------------" - - git checkout "${TARGET_COMMIT}" -- "${item_lower}" "lib${item_lower}" - git add "${item_lower}" "lib${item_lower}" - git commit -m "合并模块${item} 来源最新标签:${LATEST_TAG} 提交点:${TARGET_COMMIT}" + echo "模块:${item_lower} | 标签:$TAG | 提交哈希:$COMMIT" + git checkout origin/${item_lower} ${COMMIT} -- ${item_lower} lib${item_lower} + git add ${item_lower} lib${item_lower} + git commit -m "合并模块${item} 来源远程标签:${TAG} 提交点:${COMMIT}" done -echo "所有模块合并流程执行完毕" -echo "准备推送至远程分支" +echo "所有模块合并完成" +echo "准备推送远程" git push From e2b4bddb619faa77c8f87008ed58fce9e0d25d84 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:43:18 +0800 Subject: [PATCH 17/22] BugFix --- ...ashMergeProjects-to-Projects_Keeper_Tag.sh | 149 +++++++----------- 1 file changed, 60 insertions(+), 89 deletions(-) diff --git a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh index 28666a6..08d85eb 100644 --- a/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh +++ b/.winboll/bashMergeProjects-to-Projects_Keeper_Tag.sh @@ -1,50 +1,42 @@ #!/system/bin/sh -## 流程:获取远程最新Tag → 获取Tag对应远程Commit → 从远程分支指定提交点合并模块目录 +## 执行流程 +## 1.拉取远程所有标签 2.取模块最新标签 3.取标签对应commit 4.从远程commit拉取指定目录到本地 -# 获取模块远程完整最新TAG 无多余空格 -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 \ - | tail -1 \ - | awk '{print $2}' \ - | sed 's/refs\/tags\///' +# 获取模块最新完整标签 +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\///' } -# 通过远程标签获取对应提交哈希 -get_remote_commit_by_tag() { - local tag_name="$1" - git rev-parse --verify "${tag_name}^{commit}" 2>/dev/null +# 纯标签获取commit 不加多余前缀 +get_commit_from_tag(){ + local tag=$1 + git rev-parse --short "${tag}^{commit}" } -# 进入工作目录 +# 工作目录 TARGET_DIR="/sdcard/AppProjects/Projects_Keeper_Tag" -echo "切换工作目录:$TARGET_DIR" -if ! cd "$TARGET_DIR"; then - echo "目录切换失败!" - exit 1 -fi +echo "进入目录:${TARGET_DIR}" +cd "${TARGET_DIR}" || exit 1 -# 同步远程 -echo "==============================================" +# 同步远程数据 +echo "========================================" echo "同步远程分支与全部版本标签" -echo "==============================================" +echo "========================================" git fetch origin --prune git fetch origin --tags echo "同步完成" echo "" -# 锁定目标分支 -CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null) +# 强制校验当前分支 +NOW_BRANCH=$(git symbolic-ref --short HEAD) TARGET_BRANCH="projects_keeper_tag" -if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then - echo "错误:当前不在 $TARGET_BRANCH 分支,请先切换!" +if [ "${NOW_BRANCH}" != "${TARGET_BRANCH}" ];then + echo "错误:请先切换到 ${TARGET_BRANCH} 分支" exit 1 fi -# 目录校验 +# 目录结构校验保留 MERGE_OBJECTS_LIST=( .git .gitignore @@ -83,90 +75,69 @@ winboll.properties-demo REAL_ITEMS=() while IFS= read -r line; do - if [[ "$line" != "." && "$line" != ".." ]]; then - REAL_ITEMS+=("$line") - fi + [[ $line != "." && $line != ".." ]] && REAL_ITEMS+=("$line") done < <(ls -a) -check_diff() { - local missing=() - local extra=() - for item in "${MERGE_OBJECTS_LIST[@]}"; do - local found=0 - for r in "${REAL_ITEMS[@]}"; do - if [[ "$item" == "$r" ]]; then - found=1 - break - fi - done - if (( found == 0 )); then - missing+=("$item") - fi +check_diff(){ + local miss=() extra=() + for i in "${MERGE_OBJECTS_LIST[@]}";do + [[ ! " ${REAL_ITEMS[@]} " =~ " ${i} " ]] && miss+=("$i") done - for r in "${REAL_ITEMS[@]}"; do - local found=0 - for item in "${MERGE_OBJECTS_LIST[@]}"; do - if [[ "$item" == "$r" ]]; then - found=1 - break - fi - done - if (( found == 0 )); then - extra+=("$r") - fi + for i in "${REAL_ITEMS[@]}";do + [[ ! " ${MERGE_OBJECTS_LIST[@]} " =~ " ${i} " ]] && extra+=("$i") done - if [[ ${#missing[@]} -gt 0 || ${#extra[@]} -gt 0 ]]; then - echo "目录结构不匹配,终止执行" + if [[ ${#miss[@]} -gt 0 || ${#extra[@]} -gt 0 ]];then + echo "本地目录结构不一致,终止运行" exit 1 fi } check_diff -echo -e "#@@@ 开始按远程最新标签合并模块 @@@#" +echo -e "#@@@ 开始按远程最新标签合并模块源码 @@@#" # 应用型模块 MERGE_APP_PROJECT_LIST=(DemoAPP) -echo -e "---------- 应用型模块合并 ----------" -for item in "${MERGE_APP_PROJECT_LIST[@]}"; do - item_lower=$(echo "$item" | tr 'A-Z' 'a-z') - TAG=$(get_module_latest_tag "${item_lower}") - if [[ -z "$TAG" ]]; then - echo "跳过 ${item_lower}:无远程版本标签" +echo -e "---------- 应用型模块 ----------" +for name in "${MERGE_APP_PROJECT_LIST[@]}";do + low_name=$(echo "$name" | tr 'A-Z' 'a-z') + tag=$(get_latest_module_tag "${low_name}") + if [[ -z "${tag}" ]];then + echo "跳过 ${low_name}:无远程标签" continue fi - COMMIT=$(get_remote_commit_by_tag "$TAG") - if [[ -z "$COMMIT" ]]; then - echo "跳过 ${item_lower}:标签 $TAG 无有效提交点" + commit=$(get_commit_from_tag "${tag}") + if [[ -z "${commit}" ]];then + echo "跳过 ${low_name}:标签无有效提交点" continue fi - echo "模块:${item_lower} | 标签:$TAG | 提交哈希:$COMMIT" - # 从远程分支该提交点拉取目录 - git checkout origin/${item_lower} ${COMMIT} -- ${item_lower} - git add ${item_lower} - git commit -m "合并模块${item} 来源远程标签:${TAG} 提交点:${COMMIT}" + echo "模块:${low_name} 最新标签:${tag} 提交ID:${commit}" + # 标准正确拉取命令 + git checkout "${tag}" -- "${low_name}" + git add "${low_name}" + git commit -m "合并模块${name} 来源标签${tag} 提交${commit}" done # 类库模块 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') - TAG=$(get_module_latest_tag "${item_lower}") - if [[ -z "$TAG" ]]; then - echo "跳过 ${item_lower}:无远程版本标签" +echo -e "---------- 类库模块 ----------" +for name in "${MERGE_LIB_PROJECT_LIST[@]}";do + low_name=$(echo "$name" | tr 'A-Z' 'a-z') + tag=$(get_latest_module_tag "${low_name}") + if [[ -z "${tag}" ]];then + echo "跳过 ${low_name}:无远程标签" continue fi - COMMIT=$(get_remote_commit_by_tag "$TAG") - if [[ -z "$COMMIT" ]]; then - echo "跳过 ${item_lower}:标签 $TAG 无有效提交点" + commit=$(get_commit_from_tag "${tag}") + if [[ -z "${commit}" ]];then + echo "跳过 ${low_name}:标签无有效提交点" continue fi - echo "模块:${item_lower} | 标签:$TAG | 提交哈希:$COMMIT" - git checkout origin/${item_lower} ${COMMIT} -- ${item_lower} lib${item_lower} - git add ${item_lower} lib${item_lower} - git commit -m "合并模块${item} 来源远程标签:${TAG} 提交点:${COMMIT}" + echo "模块:${low_name} 最新标签:${tag} 提交ID:${commit}" + git checkout "${tag}" -- "${low_name}" "lib${low_name}" + git add "${low_name}" "lib${low_name}" + git commit -m "合并模块${name} 来源标签${tag} 提交${commit}" done -echo "所有模块合并完成" -echo "准备推送远程" +echo "全部模块合并执行完毕" +echo "执行推送:git push" git push From 81b7af0ec4be8c4580f30861eb686f2b1af71682 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:45:57 +0800 Subject: [PATCH 18/22] =?UTF-8?q?1.=C2=A0=E6=8E=92=E5=BA=8F=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=BD=BB=E5=BA=95=E6=8D=A2=E6=8E=89=20=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E6=8C=89=E7=89=88=E6=9C=AC=E5=8F=B7=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=EF=BC=8C=E6=8C=89=E6=A0=87=E7=AD=BE=E5=88=9B=E5=BB=BA=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E4=BB=8E=E6=96=B0=E5=88=B0=E6=97=A7=EF=BC=8C=E6=B0=B8?= =?UTF-8?q?=E8=BF=9C=E6=8B=BF=E5=88=B0=E6=9C=80=E5=90=8E=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E7=9A=84=E6=9C=80=E6=96=B0=E6=A0=87=E7=AD=BE=20=E2=80=8B=202.?= =?UTF-8?q?=C2=A0=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 "全部模块合并执行完毕" From e92538850fbe885f39c3c0827b8a701c24ef189f Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:46:18 +0800 Subject: [PATCH 19/22] =?UTF-8?q?=E5=90=88=E5=B9=B6=E6=A8=A1=E5=9D=97APPBa?= =?UTF-8?q?se=20=E5=90=8C=E6=AD=A5=E6=9C=80=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=A0=87=E7=AD=BEappbase-v15.20.12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appbase/build.properties | 8 ++++---- libappbase/build.properties | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/appbase/build.properties b/appbase/build.properties index 3c69d65..de98a9c 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 14:46:57 HKT 2026 -stageCount=12 +#Sun May 17 15:28:35 HKT 2026 +stageCount=13 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.11 +publishVersion=15.20.12 buildCount=0 -baseBetaVersion=15.20.12 +baseBetaVersion=15.20.13 diff --git a/libappbase/build.properties b/libappbase/build.properties index 3c69d65..de98a9c 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 14:46:57 HKT 2026 -stageCount=12 +#Sun May 17 15:28:35 HKT 2026 +stageCount=13 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.11 +publishVersion=15.20.12 buildCount=0 -baseBetaVersion=15.20.12 +baseBetaVersion=15.20.13 From fc20bd56b4dc374b863f4b720ce821195c3270e2 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:52:14 +0800 Subject: [PATCH 20/22] =?UTF-8?q?=E5=90=88=E5=B9=B6=E6=A8=A1=E5=9D=97APPBa?= =?UTF-8?q?se=20=E5=90=8C=E6=AD=A5=E6=9C=80=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=A0=87=E7=AD=BEappbase-v15.20.13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appbase/build.properties | 8 ++++---- libappbase/build.properties | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/appbase/build.properties b/appbase/build.properties index de98a9c..0935eef 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 15:28:35 HKT 2026 -stageCount=13 +#Sun May 17 15:52:00 HKT 2026 +stageCount=14 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.12 +publishVersion=15.20.13 buildCount=0 -baseBetaVersion=15.20.13 +baseBetaVersion=15.20.14 diff --git a/libappbase/build.properties b/libappbase/build.properties index de98a9c..0935eef 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 15:28:35 HKT 2026 -stageCount=13 +#Sun May 17 15:52:00 HKT 2026 +stageCount=14 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.12 +publishVersion=15.20.13 buildCount=0 -baseBetaVersion=15.20.13 +baseBetaVersion=15.20.14 From aa1b701c8bbd80df6e63650be1e2a9d6520ef8c8 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 17 May 2026 15:55:39 +0800 Subject: [PATCH 21/22] =?UTF-8?q?=E5=90=88=E5=B9=B6=E6=A8=A1=E5=9D=97APPBa?= =?UTF-8?q?se=20=E5=90=8C=E6=AD=A5=E6=9C=80=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=A0=87=E7=AD=BEappbase-v15.20.14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appbase/build.properties | 8 ++++---- libappbase/build.properties | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/appbase/build.properties b/appbase/build.properties index 0935eef..f451696 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 15:52:00 HKT 2026 -stageCount=14 +#Sun May 17 15:55:29 HKT 2026 +stageCount=15 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.13 +publishVersion=15.20.14 buildCount=0 -baseBetaVersion=15.20.14 +baseBetaVersion=15.20.15 diff --git a/libappbase/build.properties b/libappbase/build.properties index 0935eef..f451696 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 15:52:00 HKT 2026 -stageCount=14 +#Sun May 17 15:55:29 HKT 2026 +stageCount=15 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.13 +publishVersion=15.20.14 buildCount=0 -baseBetaVersion=15.20.14 +baseBetaVersion=15.20.15 From eb3d8f48062960c8783cf08df45c5f2f5f032aca Mon Sep 17 00:00:00 2001 From: qinglong Date: Sun, 17 May 2026 16:20:01 +0800 Subject: [PATCH 22/22] =?UTF-8?q?=E5=90=88=E5=B9=B6=E6=A8=A1=E5=9D=97APPBa?= =?UTF-8?q?se=20=E5=90=8C=E6=AD=A5=E6=9C=80=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=A0=87=E7=AD=BEappbase-v15.20.15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appbase/build.properties | 8 ++++---- libappbase/build.properties | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/appbase/build.properties b/appbase/build.properties index f451696..492916a 100644 --- a/appbase/build.properties +++ b/appbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 15:55:29 HKT 2026 -stageCount=15 +#Sun May 17 16:16:36 HKT 2026 +stageCount=16 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.14 +publishVersion=15.20.15 buildCount=0 -baseBetaVersion=15.20.15 +baseBetaVersion=15.20.16 diff --git a/libappbase/build.properties b/libappbase/build.properties index f451696..492916a 100644 --- a/libappbase/build.properties +++ b/libappbase/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun May 17 15:55:29 HKT 2026 -stageCount=15 +#Sun May 17 16:16:36 HKT 2026 +stageCount=16 libraryProject=libappbase baseVersion=15.20 -publishVersion=15.20.14 +publishVersion=15.20.15 buildCount=0 -baseBetaVersion=15.20.15 +baseBetaVersion=15.20.16