#!/bin/bash # git-auto-commit.sh - 自动提交指定目录到 Gitea # 用法: ./git-auto-commit.sh [目录路径] set -e # 配置 REPO_URL="https://gittea.dev/popiskill/skills.git" BRANCH="master" COMMIT_MSG="Auto commit: $(date '+%Y-%m-%d %H:%M:%S')" DEFAULT_SOURCE_DIR="/c/ai/openclaw" # Git Bash 路径格式 (对应 C:\ai\openclaw) # 从配置文件读取凭证 CONFIG_FILE="$(dirname "$0")/git-config.env" if [ ! -f "$CONFIG_FILE" ]; then echo "错误: 配置文件不存在: $CONFIG_FILE" echo "请创建配置文件并设置 GIT_USERNAME 和 GIT_PASSWORD" exit 1 fi source "$CONFIG_FILE" if [ -z "$GIT_USERNAME" ] || [ -z "$GIT_PASSWORD" ]; then echo "错误: 请在配置文件中设置 GIT_USERNAME 和 GIT_PASSWORD" exit 1 fi # 检查参数,使用默认值 if [ $# -lt 1 ]; then SOURCE_DIR="$DEFAULT_SOURCE_DIR" echo "未指定目录,使用默认: $SOURCE_DIR" else SOURCE_DIR="$1" fi if [ ! -d "$SOURCE_DIR" ]; then echo "错误: 目录不存在: $SOURCE_DIR" exit 1 fi # 创建工作目录 WORK_DIR=$(mktemp -d) trap "rm -rf $WORK_DIR" EXIT echo "工作目录: $WORK_DIR" echo "源目录: $SOURCE_DIR" # 克隆仓库或初始化 cd "$WORK_DIR" # 构建带凭证的 URL AUTH_URL="https://${GIT_USERNAME}:${GIT_PASSWORD}@${REPO_URL#https://}" # 尝试克隆现有仓库 if git clone "$AUTH_URL" . 2>/dev/null; then echo "已克隆现有仓库" else echo "初始化新仓库..." git init git remote add origin "$AUTH_URL" fi # 复制文件到仓库 echo "复制文件..." rsync -av --delete --exclude='.git' --exclude='.openclaw/' "$SOURCE_DIR/" . # 配置 git git config user.email "auto@commit.local" git config user.name "Auto Commit" # 添加所有更改 git add -A # 检查是否有更改要提交 if git diff --cached --quiet; then echo "没有更改需要提交" exit 0 fi # 提交并推送 git commit -m "$COMMIT_MSG" git push origin "$BRANCH" echo "✓ 成功提交到 $REPO_URL"