Convert Github Repository

Polar Sponsor
爱发电 赞助
.NET 9.0

适用于以下场景:(1)用户提供 GitHub 仓库 URL 或本地仓库路径,并请求将其转换为其他格式;(2)用户请求导出 GitHub 仓库……

Core Phition

功能概述

Core Phition是一项面向实际任务的技能,主要用于此技能将 GitHub 寄存器的内容和元数据转换为目标格式( Markdown 文档、 JSON 元数据、 CSV 表格、 文件夹树 JSON );它保存了结构 和 c。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

核心定位

本能力将 GitHub 仓库内容与元数据 转换为目标格式(Markdown 文档、JSON 元数据、CSV 表格、目录树 JSON)。它在不同格式间保持结构完整性与内容保真度——并非简单的文件复制,而是一种语义化转换,严格遵循 GitHub 的数据模型(仓库、树、提交、Issues、PRs、Releases)。

关键职责:

  • 使用 GitHub API 或本地 .git 目录解析 GitHub 仓库结构(分支、目录树、文件)
  • 将仓库数据模型(Issues、PRs、Releases、Contributors)转换为对应目标格式的表示形式
  • 在格式转换过程中保留文件内容与编码(UTF-8、二进制检测)
  • 提供转换清单(文件数量、类型分布、大小汇总)

运行模式

/convert-github-repository --markdown

仓库 → Markdown 文档。 将整个仓库转换为一组 Markdown 文件:

  • 从仓库根目录提取 README.md
  • 每个目录生成子目录,并在其内创建 README.md 描述其内容
  • Issues 导出为 issues/YYYY-MM-DD-{number}-{title}.md
  • PRs 导出为 pull-requests/YYYY-MM-DD-{number}-{title}.md
  • Releases 导出为 releases/v{semver}.md
  • 代码文件以原始语言保留,并添加语法高亮代码块围栏

/convert-github-repository --json

仓库 → JSON 元数据。 将仓库结构与内容导出为一个 JSON 文件:

{
  "repo": { "name": "...", "description": "...", "stars": N, "license": "...", "topics": [...] },
  "files": [{ "path": "...", "size": N, "type": "file|dir", "sha": "..." }],
  "branches": [{ "name": "...", "last_commit": "..." }],
  "contributors": [{ "login": "...", "contributions": N }]
}

/convert-github-repository --csv

Issues + PRs → CSV。 将 Issues 和 Pull Requests 导出为 CSV 行,列名包括:number, title, state, author, created_at, updated_at, labels, assignees, milestone, body_preview。

/convert-github-repository --tree

仓库 → 目录树 JSON。 输出一个表示仓库布局的树状结构:

{
  "path": "/",
  "type": "directory",
  "children": [
    { "path": "src/index.js", "type": "file", "size": 1234, "language": "JavaScript" },
    { "path": "tests/", "type": "directory", "children": [...] }
  ]
}

/convert-github-repository --readme-to-json

README.md → 结构化 JSON。 解析 README.md 并提取:标题(首个 H1)、描述(标题后首个段落)、安装步骤、使用示例、贡献指南、许可证信息。

执行步骤

  1. 识别仓库来源

远程 GitHub 仓库: 解析 URL 提取 owner 和 repo:

https://github.com/owner/repo -> {owner: "owner", repo: "repo"}

使用环境变量中的 GITHUB_TOKEN(os.getenv("GITHUB_TOKEN"))调用 GitHub API。

本地仓库: 验证 .git 目录是否存在。使用 git CLI 提取以下信息:

  • git ls-files 获取文件列表
  • git log --oneline 获取最近提交记录
  • git remote get-url origin 确认仓库身份

若无法识别任一来源,则报告:“无法识别仓库来源 —— 请提供 GitHub URL(如 https://github.com/owner/repo)或包含 .git 目录的本地路径。”

  1. 获取仓库元数据

对于远程仓库,调用 GitHub API:

GET https://api.github.com/repos/{owner}/{repo}
Authorization: Bearer {GITHUB_TOKEN}
Accept: application/vnd.github+json

响应中包含:full_name、description、stargazers_count、forks_count、license.spdx_id、topics、default_branch、created_at、updated_at、homepage、language。

若缺失 Token 或遭遇限流(HTTP 403),尝试无认证请求(限流更低),或报告:“GitHub API 不可用 —— 请检查 GITHUB_TOKEN 或稍后重试(无认证请求限流:60 次/小时)。”

  1. 获取仓库内容

获取默认分支树:

GET https://api.github.com/repos/{owner}/{repo}/git/trees/{default_branch}?recursive=1

返回所有文件的扁平化列表,含 path、type(blob/tree)、size、sha 字段。

对于本地仓库: 运行 git ls-tree -r --name-only {branch} 获取文件列表,再通过 git show {sha}:{path} 读取文件内容。

过滤常见非必要路径:

  • node_modules/、.git/、vendor/ —— 默认跳过,除非显式指定 --include-ignored
  • 二进制文件(图片、PDF、编译产物)—— 在清单中列出,但不包含内容
  • .gitignore 中声明但未提交的文件 —— 跳过
  1. 转换为目标格式

--markdown 转换:

  • README.md:原样保留,并更新相对链接指向本地文件
  • 代码文件:依据扩展名映射添加语法高亮代码块围栏(```language):
    • .js → ```javascript、.py → ```python、.go → ```go、.rs → ```rust 等
  • 目录:为每个目录创建 README.md,列出其包含的文件
  • Issues:每个 Issue 转换为 {number}-{slug}.md,含 frontmatter:
    ---
    number: 42
    state: open
    author: username
    created: 2024-01-15
    labels: [bug, help-wanted]
    ---
    # Title
    body text...
    
  • PRs:格式同 Issues,额外增加 merged 字段及审查评论

--json 转换:

  • 从扁平文件列表构建嵌套结构(按目录路径分组)
  • 对文本文件包含内容(若大于 1MB 则 Base64 编码)
  • 对大型仓库(>10K 文件),采用流式输出避免内存耗尽

--csv 转换:

  • 表头:number,title,state,author,created_at,updated_at,labels,assignees,milestone,body_preview
  • Labels:用 ; 分隔符连接
  • Assignees:用 ; 分隔符连接
  • Body preview:取前 200 字符,去除 Markdown 格式
  • 字段中含逗号时需加双引号;内部双引号转义为 ""

--tree 转换:

  • 构建递归树结构
  • 依据扩展名检测语言(.js → JavaScript、.py → Python 等)
  • 报告总文件数、目录数、各类型大小分布

--readme-to-json 转换:

  • 使用正则表达式或简易状态机解析 Markdown:
    • 首个 # Heading → title
    • 标题之间的段落 → 各节(installation、usage、contributing 等)
    • 代码块 → code_examples 数组
    • 表格 → 解析为对象数组
    • 链接 [text](url) → 收集至 links 数组
  1. 验证输出

交付前执行以下校验:

  • 若格式为 JSON:使用 json.loads() 解析并确认无错误
  • 若格式为 CSV:验证所有行具有相同列数
  • 若格式为 Markdown:验证所有文件可被正确读取为 UTF-8
  • 检查是否静默跳过文件 —— 报告跳过与成功转换的文件数量对比
  1. 附带清单交付

返回转换结果及清单:

{
  "format": "markdown",
  "files_converted": 142,
  "files_skipped": 3,
  "skipped_reasons": [
    {"path": "node_modules/package/index.js", "reason": "binary or non-text, excluded by default"},
    {"path": ".git/config", "reason": "contains sensitive data"}
  ],
  "total_size_bytes": 2048576,
  "output_path": "./{repo-name}-converted/"
}

强制规则

禁止行为

  • 禁止硬编码 GitHub Token —— 必须使用 os.getenv("GITHUB_TOKEN")
  • 禁止将二进制文件(图片、PDF、编译产物)作为文本转换 —— 应依据扩展名或大小(>5MB)进行检测
  • 禁止转换 .gitignore 中列出的文件,除非用户显式指定 --include-ignored
  • 禁止静默跳过文件 —— 所有跳过操作必须在清单的 skipped_reasons 中明确记录
  • 禁止输出格式校验失败的内容(非法 JSON、不可解析 CSV)
  • 禁止在未认证情况下转换私有仓库 —— 必须先验证未返回 HTTP 401 再继续执行

必须行为

  • 始终生成含 files_converted、files_skipped、skipped_reasons 的清单
  • 保留文件编码 —— 以二进制方式读取,按 UTF-8 解码,无效字节替换为 uFFFD
  • 准确报告文件数量与大小,确保透明性
  • 获取 Issues/PRs 时使用分页(GitHub API 默认每页 30 或 100 条)
  • 处理本地仓库时,必须使用 git CLI —— 不得假定可直接访问原始文件系统
  • 默认过滤常见非代码目录(node_modules、.git、pycache、build/、dist/)

质量标准

评估项 最低要求 理想目标
内容保全 100% 文本文件内容完整保留 二进制文件仅在清单中列出,不丢失内容
格式有效性 输出能通过对应格式解析器 严格执行 Schema 校验(JSON:draft-7;CSV:列结构一致)
清单完整性 每个跳过文件均注明原因 每个已转换文件均列出其大小与类型
编码正确性 所有文本文件使用 UTF-8 编码 无效字节统一替换为 U+FFFD,而非丢弃或乱码
限流处理 HTTP 403 触发重新认证尝试 主动分页 + 403 时刷新 Token
大型仓库处理 10K 文件以内仓库内存占用 < 500MB JSON 流式输出、文件分块写入

高质量输出应满足:通过目标格式解析器无报错、语义内容完全保留、且附带完整清单说明转换内容及跳过原因。

优质示例 vs 劣质示例

场景 劣质实现 优质实现
缺失 Token 无限重试无认证请求 报告“GitHub API 认证必需 —— 请设置 GITHUB_TOKEN 环境变量”
二进制文件 尝试以文本读取,导致内容损坏 跳过该二进制文件,并在清单中记录:{"path": "logo.png", "reason": "binary/image, excluded"}
大型仓库 将全部文件载入内存,最终崩溃 采用流式处理,报告“已处理 8,432 / 12,000 个文件(70%)”
遭遇限流 三次请求后静默失败 报告“超出速率限制(HTTP 403)—— 请于 14:32 UTC 后重试,或设置 GITHUB_TOKEN”
字段缺失 字段不存在时直接跳过(如 homepage) 显式包含 "homepage": null —— 不静默丢弃任何字段
格式错误 输出含尾随逗号的非法 JSON 使用 json.dumps() 校验,报告“输出非法:第 847 行出现意外 token”
本地仓库路径 假定 ~/repo 路径存在 检查 .git 目录,报告“路径不是 Git 仓库:./myrepo”

相关专题

更多
GitHub官网入口版本汇总
GitHub官网入口版本汇总

本专题整合了GitHub入口版本地址汇总,阅读专题下面的文章了解更多详细内容。

2026.04.02

558

19

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

2026.01.21

7965

27

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

2281

6

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

2517

7

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

714

5

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1260

6

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

3859

9

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习