返回顶部
p

pf-clone-gitlab批量克隆GitLab项目

Batch clone GitLab group projects with branch checkout and Excel indexing. Use when user needs to clone all projects from a GitLab group, organize by group structure, checkout multiple branches (master/default + latest + release/prod), and generate an Excel index file with project metadata and branch information.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
205
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

pf-clone-gitlab

Clone GitLab 技能

从 GitLab 组批量克隆所有项目,保持文件夹层级结构,检出关键分支,并生成 Excel 索引文件。

使用场景

  • - 用户希望从一个或多个 GitLab 顶级组批量克隆所有项目
  • 需要在本地保持原始组/子组文件夹层级结构
  • 需要检出多个分支(默认分支 + 最新活跃分支 + release/prod 分支)
  • 需要生成包含每个组独立工作表的 Excel 索引文件(01.Index.xlsx)

前提条件

开始前,需从用户处收集以下信息:

参数必填默认值说明
GitLab URL例如 https://gitlab.company.com
个人访问令牌
✅ | — | 需要 readapi + readrepository 权限范围 |
| 目标组 | ✅ | — | 组/子组/项目路径,逗号分隔。支持:顶级组(myGroup)、子组路径(myGroup/mySubGroup)或直接项目路径(myGroup/mySubGroup/my-project) |
| 本地存储路径 | ❌ | ~/Desktop/Code | 仓库存储位置 |
| 认证方式 | ❌ | HTTPS+Token | 或已配置密钥的 SSH |
| 模式 | ❌ | clone | clone(默认)、update(仅拉取)或 sync(克隆+拉取+清理过期 Excel 行) |
| 并行数 | ❌ | 4 | 并行克隆工作进程数(GITLAB_WORKERS) |
| 总超时时间 | ❌ | 0(无限制) | 全局超时时间(秒)(GITLABTOTALTIMEOUT)。0=无限制 |

工作流程

步骤 1:收集输入

向用户询问上述 4 个参数。将它们作为环境变量传递给脚本:

GITLABURL, GITLABTOKEN, GITLABGROUPS(逗号分隔), GITLABBASE_DIR

步骤 2:运行脚本

bash
cd <技能目录>/scripts
python3 cloneandindex.py

脚本自动处理所有操作:

  1. 1. 解析每个输入路径 — 自动检测是顶级组、子组还是直接项目
  2. 对于顶级组:递归获取所有子组(访问被拒绝则跳过)
  3. 对于子组路径(例如 myGroup/mySubGroup):直接解析并仅同步该子组及其后代
  4. 对于直接项目路径:仅同步该特定项目
  5. 克隆新项目 / 拉取已有项目(每个项目 5 分钟超时)
  6. 使用多进程进行并行克隆/拉取(超时时终止进程组以防止孤儿 git 进程)
  7. 检出分支:默认分支 + 最新活跃分支 + release/prod 分支
  8. 增量更新 01.Index.xlsx,每 50 个项目更新一次(确保部分结果在崩溃时得以保存)
  9. 收到 SIGTERM/SIGINT 信号时,在退出前紧急将待处理结果刷新到 Excel
  10. 在发现阶段打印每个组的项目数量,并实时显示进度和已用时间
  11. 在 sync 模式下,最终写入 Excel 时会删除已删除/已归档项目的行,并处理跨组迁移

步骤 3:报告结果

脚本完成后,报告:

  • - 克隆/更新的项目总数
  • 任何失败/超时的项目(脚本会打印摘要表格)

模式

仅更新

如果项目已存在且用户只想更新:

bash
GITLABMODE=update python3 cloneand_index.py

此模式跳过克隆,仅对已有仓库执行 git fetch --all && git pull,重新检出分支,并刷新 Excel。

同步(完全同步并清理)

进行完全同步并清理 Excel 中的过期数据:

bash
GITLABMODE=sync python3 cloneand_index.py

此模式行为类似 clone 模式(新仓库被克隆,已有仓库被拉取),但额外:

  • - 删除 GitLab 上已不存在(已删除/已归档)项目的 Excel 行
  • 处理在组间移动的项目(更新路径,删除旧行)
  • 仅清理 GITLAB_GROUPS 中指定组所属的工作表(不会影响其他组的数据)

Excel 规范

文件: <本地路径>/ 目录下的 01.Index.xlsx(例如 ~/Desktop/Code/01.Index.xlsx)

工作表: 每个顶级组一个独立工作表(工作表名称 = 组名,例如 myGroup)

列:

字段内容
A主Group名称顶级组(例如 myGroup)
B
子Group路径 | 不含项目名称的完整组路径 |
| C | Project路径 | 完整路径(例如 myGroup/mySubGroup/myProject) |
| D | Project名称 | 项目名称 |
| E | Project描述 | GitLab 描述 |
| F | 已checkout分支 | 所有本地分支,每行一个 |
| G | 分支最新提交时间 | 对应的提交时间,每行一个 |
| H | SSH Git链接 | sshurlto_repo |
| I | 下载时间 | 克隆/更新时间戳 |
| J | Project ID | GitLab 项目 ID(隐藏列,用于匹配) |

排序: A(升序)→ B(升序)→ D(升序)

格式: 冻结标题行,所有单元格细边框,F/G 列左对齐并自动换行,其他列居中对齐,UTF-8 编码。

安全性

  • - 令牌通过环境变量传递,不会记录到日志中
  • 克隆后,远程 URL 会被重置以移除嵌入的令牌
  • 如果克隆超时或崩溃,清理步骤会从 .git/config 中移除令牌

输出结构

~/Desktop/Code/
├── 01.Index.xlsx
├── myGroup/
│ ├── SubGroup1/
│ │ ├── project-a/
│ │ └── project-b/
│ └── SubGroup2/
│ └── project-c/
└── AnotherGroup/
└── ...

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 gitlab-batch-cloner-1776110522 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 gitlab-batch-cloner-1776110522 技能

通过命令行安装

skillhub install gitlab-batch-cloner-1776110522

下载

⬇ 下载 pf-clone-gitlab v1.0.1(免费)

文件大小: 21.19 KB | 发布时间: 2026-4-15 12:55

v1.0.1 最新 2026-4-15 12:55
update

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部