小程序初始化

This commit is contained in:
2026-02-27 11:32:50 +08:00
parent 93574dbb45
commit 97e1ea2706
252 changed files with 32427 additions and 12363 deletions
Executable
+133
View File
@@ -0,0 +1,133 @@
#!/bin/bash
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE} Git 智能提交工具 (Smart Push) ${NC}"
echo -e "${BLUE}========================================${NC}"
# 1. 执行代码更新
echo -e "${YELLOW}[1/3] 正在检查远程更新...${NC}"
if [ -f "./update_repo.sh" ]; then
./update_repo.sh
if [ $? -ne 0 ]; then
echo -e "${RED}[错误] 代码更新失败,已终止提交操作。请先解决更新问题。${NC}"
exit 1
fi
else
echo -e "${RED}[错误] 找不到 update_repo.sh 脚本,无法执行前置更新。${NC}"
exit 1
fi
# 2. 检查本地变更
echo -e "${YELLOW}[2/3] 正在检查本地变更...${NC}"
STATUS=$(git status --porcelain)
if [ -z "$STATUS" ]; then
echo -e "${GREEN}[提示] 本地没有需要提交的更改。${NC}"
exit 0
fi
# 获取变更文件数量
FILE_COUNT=$(echo "$STATUS" | wc -l | xargs)
echo -e "${GREEN}检测到 ${FILE_COUNT} 个文件发生变更。${NC}"
# 3. 提交与推送
echo -e "${YELLOW}[3/3] 准备提交...${NC}"
# 获取提交信息
read -p "请输入提交信息 (Commit Message): " MSG
if [ -z "$MSG" ]; then
MSG="Update code $(date +%Y-%m-%d)"
echo -e "${YELLOW}未输入信息,使用默认: ${MSG}${NC}"
fi
# 批处理阈值
BATCH_LIMIT=500
if [ "$FILE_COUNT" -gt "$BATCH_LIMIT" ]; then
echo -e "${YELLOW}警告: 变更文件数量 ($FILE_COUNT) 较多,建议分批提交以降低风险。${NC}"
read -p "是否启用分批提交模式? (y/n) [默认: y]: " ENABLE_BATCH
ENABLE_BATCH=${ENABLE_BATCH:-y}
if [[ "$ENABLE_BATCH" == "y" ]]; then
echo -e "${BLUE}>>> 启用分批模式 (每批 $BATCH_LIMIT 个文件) <<<${NC}"
# 生成文件列表临时文件
git status --porcelain | cut -c4- > .git_files_to_commit
CURRENT_BATCH=1
COUNTER=0
PENDING_FILES=""
while IFS= read -r FILE; do
# 处理文件名中的引号 (简单处理)
FILE="${FILE%\"}"
FILE="${FILE#\"}"
# 将文件添加到暂存区
git add "$FILE"
((COUNTER++))
# 达到批次限制,进行提交和推送
if [ "$COUNTER" -eq "$BATCH_LIMIT" ]; then
BATCH_MSG="$MSG (Batch $CURRENT_BATCH)"
echo -e "${YELLOW}正在提交第 $CURRENT_BATCH 批...${NC}"
if git commit -m "$BATCH_MSG"; then
echo -e "${YELLOW}正在推送第 $CURRENT_BATCH 批...${NC}"
if git push; then
echo -e "${GREEN}$CURRENT_BATCH 批推送成功!${NC}"
else
echo -e "${RED}$CURRENT_BATCH 批推送失败!请检查网络。${NC}"
rm .git_files_to_commit
exit 1
fi
else
echo -e "${RED}$CURRENT_BATCH 批提交失败!${NC}"
rm .git_files_to_commit
exit 1
fi
# 重置计数器
COUNTER=0
((CURRENT_BATCH++))
fi
done < .git_files_to_commit
# 处理剩余文件
if [ "$COUNTER" -gt 0 ]; then
BATCH_MSG="$MSG (Batch $CURRENT_BATCH - Final)"
echo -e "${YELLOW}正在提交最后一批...${NC}"
git commit -m "$BATCH_MSG" && git push
fi
rm .git_files_to_commit
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 所有批次提交完成! ${NC}"
echo -e "${GREEN}========================================${NC}"
exit 0
fi
fi
# 正常一次性提交模式
git add .
if git commit -m "$MSG"; then
echo -e "${YELLOW}正在推送到远程仓库...${NC}"
if git push; then
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 提交并推送成功! ${NC}"
echo -e "${GREEN}========================================${NC}"
else
echo -e "${RED}[错误] 推送失败。可能是网络问题或远程拒绝。${NC}"
echo -e "${YELLOW}建议: 尝试运行 ./update_repo.sh 再次更新,或检查 git push 错误信息。${NC}"
exit 1
fi
else
echo -e "${RED}[错误] 提交失败。${NC}"
exit 1
fi