Compare commits

...

15 Commits

Author SHA1 Message Date
qinglong
eb3d8f4806 合并模块APPBase 同步最新时间标签appbase-v15.20.15 2026-05-17 16:20:01 +08:00
aa1b701c8b 合并模块APPBase 同步最新时间标签appbase-v15.20.14 2026-05-17 15:55:39 +08:00
fc20bd56b4 合并模块APPBase 同步最新时间标签appbase-v15.20.13 2026-05-17 15:52:14 +08:00
e92538850f 合并模块APPBase 同步最新时间标签appbase-v15.20.12 2026-05-17 15:46:18 +08:00
81b7af0ec4 1. 排序规则彻底换掉
不再按版本号排序,按标签创建时间从新到旧,永远拿到最后发布的最新标签
​
2. 增加  -f  强制覆盖,确保拉取最新文件
​
3. 你现在  appbase-v15.20.12  是后打的标签,脚本会直接优先抓取它
​
4. 无差异也会正常同步最新标签版本文件
2026-05-17 15:45:57 +08:00
e2b4bddb61 BugFix 2026-05-17 15:43:18 +08:00
cbca61ad84 1. 删掉手动拼接标签逻辑,直接取用远程完整标签名,杜绝  appbase- 空格版本
​
2. 使用  git rev-parse --verify 标签^{commit}  精准拿远程标签commit
​
3. 合并来源强制指定  origin/模块名  远程分支
​
4. 空标签直接跳过,不再出现  xxx-  非法标签
​
5. 检出语法标准: git checkout 远程分支 commit -- 目录
2026-05-17 15:37:37 +08:00
28bc3a86e3 1. 版本排序彻底修复
按  大版本.中版本.小版本.迭代号  分段数字排序,优先抓取  appbase-v15.20.12  而不是旧版
​
2. 检出命令修正
统一使用  git checkout 提交哈希 -- 目录  语法,不再报路径不存在
2026-05-17 15:34:14 +08:00
79f7f682b3 合并模块APPBase 来源最新标签:appbase-v15.20.11 提交点:c7184ad6df0092106e535308ba486a9503395042 2026-05-17 15:25:41 +08:00
8fa09a9f99 demoapp、winboll、aes  没有  xxx-版本号  格式标签,跳过属于正常
​
2.  appbase  成功抓到标签和commit,只是命令语法错导致拉取失败,改完即可正常合并
2026-05-17 15:25:10 +08:00
555c5deef9 1.  get_module_latest_tag  → 抓取远程该模块最新Tag
​
2.  get_commit_by_tag  → 用最新Tag查出唯一对应提交Commit
​
3. 校验Tag/Commit非空
​
4. 执行合并命令git checkout origin/模块名  commit哈希:模块文件夹
 
 
 
5. 仅添加对应目录,生成带标签+commit的提交日志
​
6. 无标签直接跳过,不产生任何操作
2026-05-17 15:22:31 +08:00
3707891e0b 1. 调用函数 → 查出模块标签 + 标签绑定提交Commit哈希
​
2. 判定标签/Commit为空直接跳过
​
3. 合并命令: git checkout origin/模块名  commit哈希:模块文件夹
​
4. 仅添加当前模块目录,精准提交
​
5. 提交日志同时记录标签名+提交哈希,方便回溯
2026-05-17 15:17:40 +08:00
0c9c6c9fd4 1. 调试日志重定向  >&2
彻底杜绝调试文字混入标签变量, MOD_TAG  只存纯净标签名
​
2. 拉取标签写法修正
旧: git checkout 标签名 目录 
新: git checkout origin/tags/标签名 -- 目录 
直接从远程标签仓库拉取对应提交点文件夹,100%命中标签代码
​
3. 精准add提交
放弃  git add . ,只添加当前合并的模块文件夹,避免乱提交
​
4. 强制全量同步标签
脚本开头双重 fetch --tags ,保证本地能读取所有远程版本标签
​
5. 空标签直接拦截
匹配不到标签完全跳过,不产生空提交、无效覆盖
​
6. 严格锁定本地分支,防止合并错分支
2026-05-17 15:11:21 +08:00
be3d042ade 设置合并最新标签的模块文件夹。取消合并最新提交的文件夹。 2026-05-17 14:22:14 +08:00
qinglong
33dc49267e 合并 APPBase 项目, 调试:模块[appbase] 远程分支最新Commit = 74299bf9b2 2026-05-17 13:00:02 +08:00
4 changed files with 88 additions and 175 deletions

View File

@@ -1,81 +1,44 @@
#!/system/bin/sh
## 合并其他项目分支的模块源码到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
# 修复取整个远程分支最新Commit不限制子目录
local latest_commit
latest_commit=$(git log -1 --pretty=format:%H "$remote_branch" 2>/dev/null)
echo " 调试:模块[$module_dir] 远程分支最新Commit = $latest_commit"
# 无commit直接返回空
if [ -z "$latest_commit" ]; then
echo " 调试未获取到有效Commit跳过"
return
fi
# 精准匹配:模块名- 开头标签 + 严格比对commit哈希
git ls-remote --tags origin "${module_dir}-*" 2>/dev/null \
# 按创建时间取模块最新标签(最新打的标签排最后)
get_latest_module_tag(){
local mod=$1
git for-each-ref --sort=-creatordate --format='%(refname)' refs/tags/${mod}-* \
| grep -v '\^{}' \
| awk -v target_commit="$latest_commit" '$1 == target_commit {print $2}' \
| sed "s/refs\/tags\///"
| head -1 \
| sed 's/refs\/tags\///'
}
# ====================== 0. 进入目标目录 ======================
# 通过标签获取commit
get_commit_from_tag(){
local tag=$1
git rev-parse --short "${tag}^{commit}"
}
# 工作目录
TARGET_DIR="/sdcard/AppProjects/Projects_Keeper_Tag"
echo "进入目录:${TARGET_DIR}"
cd "${TARGET_DIR}" || exit 1
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 "========================================"
echo "同步远程分支与全部版本标签"
echo "========================================"
git fetch origin --prune
git fetch origin --tags
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)
# 校验目标分支
NOW_BRANCH=$(git symbolic-ref --short HEAD)
TARGET_BRANCH="projects_keeper_tag"
if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then
echo "错误:当前不在 $TARGET_BRANCH 分支!"
echo "当前分支:$CUR_BRANCH"
echo "请先执行git checkout $TARGET_BRANCH"
if [ "${NOW_BRANCH}" != "${TARGET_BRANCH}" ];then
echo "错误:请先切换到 ${TARGET_BRANCH} 分支"
exit 1
fi
# ====================== 4. 预设标准模块列表 ======================
# 目录结构校验
MERGE_OBJECTS_LIST=(
.git
.gitignore
@@ -112,121 +75,71 @@ winboll
winboll.properties-demo
)
# ====================== 5. 获取当前目录真实文件列表 ======================
REAL_ITEMS=()
while IFS= read -r line; do
if [[ "$line" != "." && "$line" != ".." ]]; then
REAL_ITEMS+=("$line")
fi
[[ $line != "." && $line != ".." ]] && REAL_ITEMS+=("$line")
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
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 "=============================================="
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=============================================="
if [[ ${#miss[@]} -gt 0 || ${#extra[@]} -gt 0 ]];then
echo "本地目录结构不一致,终止运行"
exit 1
fi
}
# 执行差异校验
check_diff
# ====================== 全部校验通过,继续执行合并 ======================
echo -e "#@@@ 开始合并模块源码 @@@#
## 目标合并对象列表:"
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')
MOD_TAG=$(get_module_latest_tag "$item_lower")
# 无标签直接跳过所有操作不checkout、不add、不commit
if [ -z "$MOD_TAG" ]; then
echo "跳过 $item_lower :最新提交未打标签"
# 应用型模块
MERGE_APP_PROJECT_LIST=(DemoAPP)
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
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')
MOD_TAG=$(get_module_latest_tag "$item_lower")
# 无标签直接跳过所有操作
if [ -z "$MOD_TAG" ]; then
echo "跳过 $item_lower :最新提交未打标签"
commit=$(get_commit_from_tag "${tag}")
if [[ -z "${commit}" ]];then
echo "跳过 ${low_name}:标签无有效提交点"
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"
echo "模块:${low_name} 最新时间标签:${tag} 提交ID:${commit}"
# 强制拉取覆盖
git checkout -f "${tag}" -- "${low_name}"
git add "${low_name}"
git commit -m "合并模块${name} 同步最新时间标签${tag}"
done
echo '正在推送 Projects_Keeper 项目'
# 类库模块
MERGE_LIB_PROJECT_LIST=(WinBoLL APPBase AES)
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_commit_from_tag "${tag}")
if [[ -z "${commit}" ]];then
echo "跳过 ${low_name}:标签无有效提交点"
continue
fi
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}"
done
echo "全部模块合并执行完毕"
echo "执行推送git push"
git push

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sat May 16 09:15:15 GMT 2026
stageCount=10
#Sun May 17 16:16:36 HKT 2026
stageCount=16
libraryProject=libappbase
baseVersion=15.20
publishVersion=15.20.9
buildCount=7
baseBetaVersion=15.20.10
publishVersion=15.20.15
buildCount=0
baseBetaVersion=15.20.16

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sat May 16 09:15:15 GMT 2026
stageCount=10
#Sun May 17 16:16:36 HKT 2026
stageCount=16
libraryProject=libappbase
baseVersion=15.20
publishVersion=15.20.9
buildCount=7
baseBetaVersion=15.20.10
publishVersion=15.20.15
buildCount=0
baseBetaVersion=15.20.16

View File

@@ -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();