优化注册功能

This commit is contained in:
赵杰 Jie Zhao (雄狮汽车科技)
2025-11-03 12:29:32 +08:00
parent f50d37259e
commit 7ab87e8f15
10 changed files with 829 additions and 83 deletions

138
git_push.py Normal file
View File

@@ -0,0 +1,138 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Git 自动上传脚本(跨平台)
支持 Windows、Linux、Mac
"""
import os
import sys
import subprocess
import platform
from datetime import datetime
# 颜色输出Windows 10+ 支持 ANSI
def print_color(text, color="white"):
colors = {
"red": "\033[0;31m",
"green": "\033[0;32m",
"yellow": "\033[1;33m",
"blue": "\033[0;34m",
"reset": "\033[0m"
}
if platform.system() == "Windows":
# Windows 10+ 支持 ANSI需要启用
try:
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
except:
pass
color_code = colors.get(color.lower(), colors["reset"])
reset = colors["reset"]
print(f"{color_code}{text}{reset}")
def run_command(cmd, check=True):
"""执行命令并返回结果"""
try:
result = subprocess.run(
cmd,
shell=True,
check=check,
capture_output=True,
text=True,
encoding='utf-8'
)
return result.returncode == 0, result.stdout.strip(), result.stderr.strip()
except subprocess.CalledProcessError as e:
return False, e.stdout.strip() if hasattr(e, 'stdout') else "", e.stderr.strip() if hasattr(e, 'stderr') else ""
def main():
print_color("=== Git 自动上传脚本 ===", "green")
# 检查是否在 git 仓库中
if not os.path.exists(".git"):
print_color("错误: 当前目录不是 git 仓库", "red")
sys.exit(1)
# 获取当前分支
success, branch, _ = run_command("git branch --show-current", check=False)
if not success:
success, branch, _ = run_command("git rev-parse --abbrev-ref HEAD", check=False)
if not branch:
print_color("错误: 无法获取当前分支", "red")
sys.exit(1)
print_color(f"当前分支: {branch}", "yellow")
# 检查是否有未提交的更改
success, status, _ = run_command("git status --porcelain", check=False)
if not status:
print_color("没有需要提交的更改", "yellow")
response = input("是否继续检查远程更新? (y/n) ").strip().lower()
if response == 'y':
print_color("拉取远程更新...", "green")
run_command(f"git pull origin {branch}", check=False)
sys.exit(0)
# 显示当前状态
print_color("当前更改状态:", "yellow")
success, status_output, _ = run_command("git status --short", check=False)
print(status_output)
# 询问是否继续
response = input("是否继续提交并推送? (y/n) ").strip().lower()
if response != 'y':
print_color("操作已取消", "yellow")
sys.exit(0)
# 获取提交信息
if len(sys.argv) > 1:
commit_msg = " ".join(sys.argv[1:])
else:
default_msg = f"chore: update code {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
user_msg = input(f"请输入提交信息(或直接按回车使用默认信息): ").strip()
commit_msg = user_msg if user_msg else default_msg
# 添加所有更改
print_color("添加文件到暂存区...", "green")
success, _, error = run_command("git add -A")
if not success:
print_color(f"添加文件失败: {error}", "red")
sys.exit(1)
# 提交更改
print_color("提交更改...", "green")
success, _, error = run_command(f'git commit -m "{commit_msg}"')
if not success:
if "nothing to commit" in error.lower():
print_color("没有需要提交的更改", "yellow")
sys.exit(0)
print_color(f"提交失败: {error}", "red")
sys.exit(1)
print_color("提交成功!", "green")
# 推送到远程
print_color("推送到远程仓库...", "green")
success, _, error = run_command(f"git push origin {branch}")
if not success:
print_color(f"推送失败: {error}", "red")
print_color(f"提示: 可以手动执行 'git push origin {branch}'", "yellow")
print_color("可能需要设置远程仓库地址或进行身份验证", "yellow")
sys.exit(1)
print_color("✓ 推送成功!", "green")
print_color("=== 完成 ===", "green")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print_color("\n操作已取消", "yellow")
sys.exit(0)
except Exception as e:
print_color(f"发生错误: {e}", "red")
sys.exit(1)