SuperAPI AI 工具集

repo-sync

编程与开发

查看项目

更新于 10-16 04:02

技能介绍

概述

repo-sync 是一个用于在 workspace-hub 生态中批量管理并同步多个 Git 仓库的技能。它提供针对 26 个以上仓库的批量操作、状态监控和协调同步能力。

主要用途与使用场景

  • 开始工作会话时,一次性拉取所有仓库的最新变更
  • 结束一天工作时,提交并推送所有待处理的更改
  • 检查哪些仓库存在未提交的更改或落后于远程
  • 在多个相关仓库之间协调分支变更
  • 在整个工作区生态中发布更新

主要能力

核心操作

  • 状态检查:./scripts/repository_sync status all
  • 拉取操作:./scripts/repository_sync pull all
  • 提交操作:./scripts/repository_sync commit all -m "Update dependencies"
  • 推送操作:./scripts/repository_sync push all
  • 完整同步(提交+推送):./scripts/repository_sync sync all -m "End of day sync"

状态指示

  • 🟢 Clean:无变更且已是最新
  • 🔴 Uncommitted:存在本地更改
  • 🟣 Unpushed:存在未推送的提交
  • 🔵 Behind:远程有更新
  • 🟡 Not cloned:本地缺少该仓库

仓库分类

  • Work 仓库:digitalmodel、energy、frontierdeepwater、aceengineer-admin、aceengineer-website 等
  • Personal 仓库:个人项目、学习仓库、个人工具等

分类定义在 .gitignore 中,可通过 ./scripts/repository_sync list work、list personal、list all 查看。

分支管理

  • 列出分支:./scripts/repository_sync branches all
  • 获取远程分支:./scripts/repository_sync fetch-branches all
  • 与 main 同步:./scripts/repository_sync sync-main all(可用 --rebase)
  • 切换分支:./scripts/repository_sync switch all main

工作流示例

日常开发:

./scripts/repository_sync pull all
./scripts/repository_sync sync all -m "$(date +%Y-%m-%d) updates"

功能分支:

./scripts/repository_sync switch work feature/new-feature
./scripts/repository_sync sync-main work
./scripts/repository_sync push work
./scripts/repository_sync switch work main

发布流程:

./scripts/repository_sync switch work release/v1.2.0
./scripts/repository_sync sync work -m "Release v1.2.0 preparation"
./scripts/repository_sync switch work main
./scripts/repository_sync pull work

批量与并行

可针对指定仓库执行操作,例如 ./scripts/repository_sync sync digitalmodel energy -m "Update",也支持 --parallel 并行执行。

使用方式

前提条件:

  • 已安装并配置 SSH 密钥的 Git
  • 可访问 workspace-hub 中的所有仓库
  • ./scripts/repository_sync 脚本可用且可执行
  • 仓库 URL 已在 config/repos.conf 中配置

可编辑配置:./scripts/repository_sync config;刷新仓库列表:./scripts/repository_sync refresh。

错误处理

资料提供了合并冲突、过期分支、恢复到远程状态、认证问题、网络问题、权限被拒等情形的处理命令。冲突时先查看状态,再到受影响仓库手动解决后继续同步。

Windows / Git Bash 注意事项

  • 远程文件名尾随空格会阻止 checkout,可用 git config core.protectNTFS false 或跳过这些文件
  • 长路径:git config --global core.longpaths true
  • 符号链接需要管理员权限,可用 git config core.symlinks false
  • 脚本必须使用 LF 而非 CRLF,可用 dos2unix 修复或设置 git config core.autocrlf input
  • MINGW 下根路径为 /d/ 而非 /,应使用 WORKSPACE_HUB 环境变量解析路径
  • 拉取前建议先 stash,拉取后 pop,冲突时报告用户而非自动解决
  • 子模块远程被 force-push 时,可用 git fetch origin && git reset --hard origin/main,不要对已分叉分支执行 rebase
  • 判断目录是否为子模块前先检查 .gitmodules:git submodule status
  • 远程新增文件匹配本地 .gitignore 时,使用 git add -f <file> 强制跟踪

限制与暂未提供

资料未说明该技能的具体安装方式(除脚本可用性要求外)、版本发布渠道、许可条款或价格信息。