#!/bin/bash # WWJCloud 安全推送脚本 # 功能:只允许从 wwjcloud-nest 子仓库推送到 wwjcloud 远程 # 作者:WWJCloud Team # 版本:v1.0 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 检查当前目录 check_directory() { if [[ ! -d ".git" ]]; then echo -e "${RED}❌ 错误:当前目录不是Git仓库${NC}" exit 1 fi # 检查是否在 wwjcloud-nest 目录 current_dir=$(basename "$PWD") if [[ "$current_dir" != "wwjcloud-nest" ]]; then echo -e "${RED}❌ 错误:此脚本只能在 wwjcloud-nest 目录中运行${NC}" echo -e "${YELLOW}💡 提示:请切换到 wwjcloud-nest 目录后再运行${NC}" exit 1 fi } # 检查远程仓库配置 check_remote() { local remote_url=$(git remote get-url origin 2>/dev/null || echo "") if [[ "$remote_url" != *"wwjcloud.git"* ]]; then echo -e "${RED}❌ 错误:当前仓库的origin不是wwjcloud.git${NC}" echo -e "${YELLOW}当前origin: $remote_url${NC}" exit 1 fi } # 检查分支状态 check_branch_status() { # 检查是否有未提交的更改 if ! git diff-index --quiet HEAD --; then echo -e "${RED}❌ 错误:存在未提交的更改${NC}" echo -e "${YELLOW}💡 请先提交所有更改:git add . && git commit -m \"your message\"${NC}" exit 1 fi # 获取当前分支 current_branch=$(git branch --show-current) echo -e "${BLUE}📍 当前分支:$current_branch${NC}" # 检查是否在保护分支 if [[ "$current_branch" == "v0.1.1-branch" ]]; then echo -e "${RED}❌ 错误:不能从v0.1.1-branch推送(这是纯净底板)${NC}" echo -e "${YELLOW}💡 请切换到master分支:git checkout master${NC}" exit 1 fi } # 推送到wwjcloud远程(发布版本) push_to_release() { echo -e "${GREEN}🚀 开始推送到发布仓库...${NC}" # 显示即将推送的提交 echo -e "${BLUE}📋 即将推送的提交:${NC}" git log --oneline -5 # 确认推送 echo -e "${YELLOW}⚠️ 这将推送到用户可见的发布仓库,确认继续? (y/N)${NC}" read -r confirm if [[ ! "$confirm" =~ ^[Yy]$ ]]; then echo -e "${YELLOW}❌ 推送已取消${NC}" exit 0 fi # 执行推送 echo -e "${GREEN}📤 推送到 origin (wwjcloud.git)...${NC}" git push origin HEAD echo -e "${GREEN}✅ 发布推送完成!${NC}" echo -e "${BLUE}🌐 用户现在可以看到最新版本${NC}" } # 主函数 main() { echo -e "${BLUE}🔒 WWJCloud 安全推送脚本 v1.0${NC}" echo -e "${BLUE}================================${NC}" # 执行检查 check_directory check_remote check_branch_status # 执行推送 push_to_release } # 运行主函数 main "$@"