86 lines
1.9 KiB
Bash
86 lines
1.9 KiB
Bash
#!/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"
|