一个用户脚本(UserScript),在 GitHub 和 Gitee 的仓库页面上显示仓库的建立时间、最近推送、最近更新、项目年龄、代码活跃度和仓库体积。
这些信息平台本身不直接提供:页面上只能看到"最近提交"之类的相对时间,想知道仓库是哪年建的、多久没推代码了,得自己去翻 API。
| 条目 | 说明 |
|---|---|
| 创建时间 | 仓库建立的时间 |
| 最后推送 | 代码最后一次 git push 的时间 |
| 最后更新 | 仓库信息最后一次变更的时间 |
| 项目年龄 | 从创建到现在 |
| 代码活跃度 | 按最后一次推送判断:活跃 / 较活跃 / 一般 / 冷淡 / 沉寂 |
| 仓库大小 | 仓库体积,自动使用 KB / MB / GB。部分仓库无法获取,详见下文 |
鼠标悬停每一项可以看到完整的时间戳和字段说明。
这两个时间经常不一样,属于正常现象:
pushed_at)只有推送代码才会变化。updated_at)范围更广:推送代码、开/关 Issue、发 PR、发布 Release、修改 Wiki、修改仓库描述或标签,都会刷新它。所以如果看到「最后更新」比「最后推送」新,说明这段时间有人开了 Issue 或发了版本,但没推代码。看代码进度用「最后推送」,看仓库动静用「最后更新」。
可选的悬浮面板打开后,会在任何仓库页面显示同一份信息,见下文。
如果脚本管理器没有自动识别,也可以手动安装:Tampermonkey 面板 → 添加新脚本 → 清空编辑器 → 粘贴 github-gitee-repo-meta.user.js 全文 → 保存。
支持的浏览器:Chrome、Edge、Firefox 等所有支持 Tampermonkey / Violentmonkey 的浏览器。
Gitee 的 OpenAPI 不接受匿名请求(返回 404),必须携带私人令牌,因此使用 Gitee 前需要配置一次。
登录 Gitee,点击右上角头像 → 设置 → 左侧 私人令牌 → 生成新令牌。
权限只需勾选 projects,其余不需要。填写描述后提交。
令牌只会显示一次,立即复制。
打开任意 Gitee 页面,按 F12 打开控制台,执行:
localStorage.setItem('repoMeta:giteeToken', '这里粘贴你的令牌')
刷新页面即可。
令牌保存在你自己浏览器的 localStorage 中,只在访问 gitee.com/api/v5 时作为参数携带。删除令牌:
localStorage.removeItem('repoMeta:giteeToken')
GitHub 未登录状态下 API 限额为每小时 60 次。脚本会把结果缓存 6 小时,正常浏览一般够用。如果需要更高额度:
localStorage.setItem('repoMeta:ghToken', 'ghp_你的令牌')
GitHub 令牌只需要读取公开仓库的权限即可。
默认关闭。开启后,在 GitHub / Gitee 的任何仓库页面上都会显示一块可拖动的浮动面板。
开启方式:点击信息卡右上角的 ⚙ → 「悬浮面板」开关。
| 操作 | 效果 |
|---|---|
| 拖动标题栏 | 移动面板位置,位置会被记住 |
| − | 收起 / 展开,只保留标题栏 |
| × | 关闭,提供三种选择:只关这一次(刷新后恢复)、24 小时内不再显示、关闭悬浮面板 |
| ⚙ | 开关悬浮面板 |
点击面板以外的位置会自动收起菜单。
三种方式,任选其一:
在 GitHub / Gitee 仓库首页的信息卡上点击 ⚙,打开「悬浮面板」开关。
点击浏览器里的 Tampermonkey 图标 → 菜单中的「Repo Meta:开启 / 关闭悬浮面板」。
打开控制台执行:
repoMetaSettings({ float: true })
localStorage.removeItem('repoMeta:settings')
查看当前设置:控制台执行 repoMetaSettings()。
脚本只发出两类请求:
https://api.github.com/repos/{owner}/{repo}https://gitee.com/api/v5/repos/{owner}/{repo}不加载任何第三方资源,不收集、不上传浏览记录,不向其他服务器发送数据。查询结果按仓库缓存在本地 localStorage 中,有效期 6 小时。
信息卡没有出现?
确认打开的是仓库首页(地址形如 github.com/用户名/仓库名),并且脚本已在 Tampermonkey 中启用。也可以在控制台执行 repoMetaDoctor(),它会输出当前页面的解析结果、卡片状态和设置内容。
Gitee 上显示「获取失败」?
通常是还没有配置私人令牌,按上文「Gitee 需要配置访问令牌」操作一次即可。
GitHub 上显示「限流」?
未登录状态下 API 每小时 60 次。等待一段时间,或者配置 GitHub 令牌。
时间看起来不对?
时间是按浏览器本地时区显示的。悬停可以看到原始时间戳。
为什么有些仓库没有「仓库大小」这一行?
体积来自平台的仓库接口,而两个平台对这项数据的支持程度不同:
size(单位 KB),因此 GitHub 仓库一定能显示。对于拿不到体积的仓库,脚本会直接隐藏「仓库大小」这一行,而不是显示一个占位符。这不是脚本故障,也不影响其它条目。
想确认某个 Gitee 仓库到底有没有这项数据,可以在仓库页按 F12 执行:
fetch('https://gitee.com/api/v5/repos/{owner}/{repo}?access_token=' +
encodeURIComponent(localStorage.getItem('repoMeta:giteeToken')))
.then(r => r.json())
.then(d => console.log(Object.keys(d), 'size =', d.size))
若输出中没有 size 字段,说明该平台未提供,无法通过脚本补全(需要遍历文件树累加统计,请求量过大,未采用)。
使用中遇到问题,请附上控制台 repoMetaDoctor() 的输出,方便定位。
MIT