Skip to content

gvt repo — 多仓库同步推送

.gvt/repo/ 读取主/副仓库配置并执行同步推送。支持设置一个主仓库和多个副仓库;推送或打 tag 推送时,先完成所有副仓库的推送,最后再推主仓库。副仓库推送失败默认不阻塞主流程,可在配置中设 block = true 使其阻塞。

用法

bash
gvt repo                              # 查看当前仓库配置概览
gvt repo ls                           # 列出所有已配置仓库
gvt repo add <name> -u <url>          # 添加副仓库(默认)
gvt repo add <name> -u <url> --main   # 添加并设为主仓库(唯一)
gvt repo add <name> -u <url> --block  # 添加副仓库并设为阻塞
gvt repo remove <name>                # 移除仓库
gvt repo enable/disable <name>        # 启用/禁用指定仓库
gvt repo enable/disable --all         # 切换全局总开关
gvt repo push                         # 推送当前分支(先副后主)
gvt repo push -b main                 # 推送 main 分支
gvt repo tag v1.0.0                   # 推送标签(先副后主)

子命令与参数

子命令说明
add添加仓库(默认副仓库)。-u/--url 必填;--main 设为主仓库(唯一,已有 main 自动降级);--block 副仓库推送失败阻塞主流程;--disabled 添加后默认禁用
remove移除指定仓库
enable / disable启用/禁用指定仓库(可多个),或 --all 切换全局总开关
push同步推送分支(默认当前分支)。-b/--branch 指定分支;--no-hook 跳过推送前钩子检查;--dry-run 演练
tag同步推送标签(位置参数)。支持 --no-hook--dry-run
ls列出所有已配置仓库

推送顺序与阻塞

  1. 推送前默认运行一次项目完整钩子检查(仅当项目存在 .gvt/hook/ 时触发,--no-hook 关闭)。
  2. 先按配置顺序推送所有副仓库(mirror):
    • block = false(默认):该副仓库推送失败仅记录并继续;
    • block = true:该副仓库推送失败即中止,不再推主仓库。
  3. 最后推送主仓库(main)。

配置结构

配置存于 .gvt/repo/config.toml[repo] enabled 总开关)与 .gvt/repo/remotes/<name>.toml(每个仓库一个),由 gvt repo add 自动维护,也可手动编辑。

示例 remotes/github.toml

toml
[remote]
name = "github"
url = "git@github.com:user/project.git"
enabled = true
role = "main"   # main=主仓库 / mirror=副仓库(缺省 mirror)
block = false   # 副仓库推送失败是否阻塞主流程(缺省 false)

基于 MIT 协议开源