🎉 init: 小龙的工作空间
This commit is contained in:
Executable
+76
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
# sync-agent-repos.sh — 同步 GitHub Agent 框架到 Gitea(排除大资源文件)
|
||||
set -eo pipefail
|
||||
|
||||
GITEA="https://git666.u7f.cn"
|
||||
GITEA_USER="sawz"
|
||||
GITEA_PASS="45324622ww"
|
||||
GITEA_ORG="Github"
|
||||
PROXY="socks5://127.0.0.1:12002"
|
||||
WORK_DIR="/tmp/gitea-sync"
|
||||
mkdir -p "$WORK_DIR"
|
||||
|
||||
REPO_LIST=(
|
||||
"MetaGPT|FoundationAgents/MetaGPT"
|
||||
"CrewAI|crewAIInc/crewAI"
|
||||
"AutoGen|microsoft/autogen"
|
||||
"Mastra|mastra-ai/mastra"
|
||||
"MCP-Use|mcp-use/mcp-use"
|
||||
"RagaAI-Catalyst|raga-ai-hub/RagaAI-Catalyst"
|
||||
)
|
||||
|
||||
EXCLUDE_PATTERNS=(
|
||||
"*.gif" "*.mp4" "*.mov" "*.avi" "*.webm" "*.webp"
|
||||
"*.png" "*.jpg" "*.jpeg" "*.svg" "*.ico"
|
||||
"*.woff" "*.woff2" "*.ttf" "*.eot"
|
||||
"*.zip" "*.tar" "*.gz" "*.bz2" "*.7z" "*.rar"
|
||||
"*.pdf" "*.whl" "*.egg" "*.jar"
|
||||
"docs/images/*" "docs/*/images/*" "static/images/*"
|
||||
)
|
||||
|
||||
sync_repo() {
|
||||
local name="$1" github_path="$2" clone_dir="$WORK_DIR/$name"
|
||||
echo "=== [$name] ==="
|
||||
|
||||
# 检查是否已存在
|
||||
if curl -sf -u "$GITEA_USER:$GITEA_PASS" "$GITEA/api/v1/repos/$GITEA_ORG/$name" >/dev/null 2>&1; then
|
||||
# 增量更新
|
||||
local remote_sha=$(curl -sf --proxy "$PROXY" "https://api.github.com/repos/$github_path" 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin).get('pushed_at',''))" 2>/dev/null)
|
||||
local local_sha=$(curl -sf -u "$GITEA_USER:$GITEA_PASS" "$GITEA/api/v1/repos/$GITEA_ORG/$name/commits?limit=1" 2>/dev/null | python3 -c "import json,sys; d=json.load(sys.stdin); print(d[0]['commit']['committer']['date'] if d else '')" 2>/dev/null)
|
||||
if [ "$remote_sha" = "$local_sha" ] 2>/dev/null; then
|
||||
echo " ℹ️ 无更新"; return 0
|
||||
fi
|
||||
echo " 🔄 检测到更新,重新同步..."
|
||||
curl -sf -u "$GITEA_USER:$GITEA_PASS" -X DELETE "$GITEA/api/v1/repos/$GITEA_ORG/$name" >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
rm -rf "$clone_dir"
|
||||
echo " 📥 克隆中..."
|
||||
GIT_HTTP_PROXY="$PROXY" git clone --depth=1 "https://github.com/$github_path.git" "$clone_dir" 2>/dev/null
|
||||
cd "$clone_dir"
|
||||
|
||||
echo " 🧹 排除大文件..."
|
||||
for p in "${EXCLUDE_PATTERNS[@]}"; do
|
||||
find . -not -path './.git/*' -name "$p" -type f -delete 2>/dev/null
|
||||
done
|
||||
find . -not -path './.git/*' -type d -empty -delete 2>/dev/null
|
||||
|
||||
curl -sf -u "$GITEA_USER:$GITEA_PASS" -X POST "$GITEA/api/v1/orgs/$GITEA_ORG/repos" \
|
||||
-H "Content-Type: application/json" -d "{\"name\":\"$name\",\"private\":false,\"auto_init\":false}" 2>/dev/null || true
|
||||
|
||||
rm -rf .git && git init -q && git add -A
|
||||
git commit -q -m "sync: code-only from github.com/$github_path" --allow-empty
|
||||
git remote add origin "$GITEA/$GITEA_ORG/$name.git"
|
||||
git push -u origin HEAD:main --force 2>/dev/null || git push -u origin HEAD:master --force 2>/dev/null
|
||||
|
||||
local size=$(du -sh . 2>/dev/null | cut -f1)
|
||||
echo " ✅ $name — $size"
|
||||
cd "$WORK_DIR"
|
||||
rm -rf "$clone_dir"
|
||||
}
|
||||
|
||||
echo "# Agent 框架同步 — $(date '+%Y-%m-%d %H:%M')"
|
||||
for entry in "${REPO_LIST[@]}"; do
|
||||
sync_repo "${entry%%|*}" "${entry#*|}" 2>&1
|
||||
done
|
||||
echo "🎉 完成 — $(date '+%H:%M')"
|
||||
Reference in New Issue
Block a user