这是什么

CatHub 是一个给猫用的「代码托管平台」。它借用了 GitHub 那一套协作思路 —— 仓库、提交、分支、合并、派生、提案、工单 —— 只是把内容换成了猫的档案、体重、丑照和养猫经验。

概念对照
GitHub 里的东西在 CatHub 里叫说明
Repository 仓库猫仓一只猫一个主页,地址就是 用户名/猫仓名
Commit 提交记录写日记、传照片、改体重,每次都生成一条带哈希的记录
Blob / Tree照片与目录照片本体按内容哈希存放,目录结构就是 git 的 tree 对象
Log 历史记录页按日期倒序,任何提交都排在它的父提交之前
Diff 差异变更对比看这次改了哪几行 —— 包括体重是涨了还是掉了
Blame 追责追责每一行是谁写的。想知道谁把体重改成 5.2kg,看这里
Branch 分支生活分支比如「减肥计划」「绝育线」,可以并行记录再合并
Merge 合并合并能快进就快进,有分叉就生成一个双父提交
Fork 派生云养一只把整份档案(含全部历史和照片)复制到自己名下
Pull Request攻略修订提案在独立分支上改,主人同意才合并进主线
Issue 工单求助猫不吃粮、乱尿、半夜跑酷,都可以发
Star 标星投喂给一条小鱼干 🍤
底下的实现(给好奇的人)

本站的版本控制内核是自己用 JavaScript 写的,不是调用 git 命令。它严格遵循 git 的对象格式:

  • 存储内容 = <类型> <字节数> + 正文,对象 ID = 该内容的 SHA-1
  • 对象类型包含 blob / tree / commit,落盘为 zlib 压缩的松散对象
  • 已经用 GitHub 上的真实仓库做过对齐验证:把真实 blob / tree / commit 重新编码, 算出的 SHA-1 与 GitHub 给出的完全一致(node src/git/verify-against-github.js)

这意味着即使哪天你装了真 git,也能直接读懂这些对象。全站目前有 423 个 git 对象、85 条提交。

整个服务零第三方依赖,只要一台装了 Node.js 的机器就能跑 —— 宝塔面板里新建一个 Node 项目即可。