前言¶
在 DSH 里开发时,往往同时挂着多个 Git 仓库:工程、脚本库、笔记各一份。GitHub 网页上的贡献图只能看单个仓库;若要在本地确认「今天有没有提交」,又得在终端里来回切目录。DSH 客户端插件 dsh-git-heatmap 把多个本地或远程仓库的提交记录聚合成一张 GitHub 风格热力图,并支持按日、月、年切换查看,在面板内刷新、提交与推送。
这是什么¶
dsh-git-heatmap 由维护者 bmdoctor7 发布,分类为客户端插件。当前包版本为 0.1.0(见 package.json),许可证 MIT。它解决的是多仓库提交可视与轻量运维:汇总逐日提交数,对远程条目做 git fetch 检测新提交,对有改动的本地仓库可在面板内完成 add、commit、push,且不使用 --force。
社区目录页:https://www.skillhub.cn/plugins/bmdoctor7/dsh-git-heatmap。源码与说明:https://github.com/bmdoctor7/dsh-git-heatmap。SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」的扩展方式,安装第三方包前应自行查阅源码与许可证。插件以当前 DSH 进程权限执行 Git 命令,请勿在未审阅代码的情况下用于敏感仓库。
核心功能¶
下列能力均来自仓库 README 与 package.json 说明。
多仓库聚合:所有已添加仓库的逐日提交数相加;顶部胶囊可筛选为只看某一个仓库。
三种时间粒度:日视图为 7×N 周历(可切换年份);月视图为年 × 12 个月;年视图一年一格。
刷新语义:仅对列表中的远程条目执行 git fetch;若尚未克隆,会先 clone --bare --filter=blob:none。本地仓库不会在刷新时 fetch,只重新扫描已有历史。要在热力图里看到本地仓库对应的远端新提交,需自行在终端 fetch 后再点刷新。
统计小卡:总提交数、最近一次提交(仓库、日期、标题)、当前与最长连续提交天数、未提交文件数与未推送提交数。
面板内提交与推送:展开仓库行即可操作。「提交」对应 git add -A 与 git commit -m;「提交并推送」在此基础上执行 git push(无上游时使用 push -u origin HEAD)。远程条目对应只读裸库,不能提交。插件声明永远不带 --force。
远程仓库无需在插件内配置 token:通过 bare 克隆且不存文件内容,支持 GitHub、Gitee、自建 GitLab 以及 ssh 形式地址(凭据仍依赖系统 credential helper / ssh agent,见下文限制)。
宿主半侧在 /git-heat/api 下提供 state、add、remove、refresh、commit 等接口;浏览器侧通过相对路径访问,并沿用与官方 /api 网关相同的主机与跨站检查。
安装与启用¶
README 给出三种安装方式,安装时需指定 DSH profile(Desktop 使用其自有 profile,不是 web)。
# npm 发布后
dsh plugin --profile <profile> add dsh-git-heatmap
# 从 GitHub 源码
dsh plugin --profile <profile> add github:<user>/dsh-git-heatmap
# 本地打好的 tgz
dsh plugin --profile <profile> add <路径>/dsh-git-heatmap-0.1.0.tgz
也可在 DSH Desktop 的插件页按包名搜索安装,效果与上述命令装入对应 profile 一致。
兼容性:README 记载在 DSH 0.2.1-rc.5、Windows 11、git 2.56 上实测通过。其它 0.2.x 未实测但契约相同,理论上可用;0.1.x 不支持(客户端半侧依赖 0.2 形态的槽位与 __ModuleLoader__)。macOS / Linux 未实测,宿主侧未见 Windows 硬依赖。package.json 中 dsh.compatibility.dshReleases 仅声明 0.2.1-rc.5 为 compatible,未在 engines 里写死 DSH 版本闸门。
运行环境要求 Node >= 20。
典型用法¶
经过安装并启用插件后,可按 README 步骤操作。
- 在左侧栏点击「Git 热力图」。
- 在输入框填入本地仓库绝对路径(例如
D:\code\my-project)或远程地址(https://…/git@…),回车添加。 - 点击右上角圆形箭头执行刷新。
- 点击仓库行展开:填写提交信息后可提交或推送;点击「移除」从列表删除仓库(远程条目会一并删除裸克隆缓存)。
配置与缓存目录默认位于 %USERPROFILE%\.dsh\storages\git-heatmap\(含 config.json 与远程条目的 repos/<id>/ 裸克隆)。可通过环境变量 DSH_GIT_HEATMAP_DIR 整体更换目录位置。
适用场景与注意¶
适合谁:同时维护多个 Git 仓库、希望在 DSH 内一眼看清提交节奏、并偶尔在面板内完成提交推送的开发者。README 举例包括 UE 工程、算法练习库、笔记库等并行维护的情形。
只读扫描:扫描阶段使用 git log、rev-list 等只读命令;git status 使用 git --no-optional-locks status --porcelain,README 说明实测扫描前后 .git/index 大小与 mtime 不变。写操作仅来自用户点击的提交、推送按钮,无后台写入、定时任务或遥测。
已知限制(摘自 README):
- 本地仓库的「落后(behind)」数反映的是你上次自行 fetch 的状态。
- 私有仓库依赖系统凭据;插件设置
GIT_TERMINAL_PROMPT=0与GIT_ASKPASS=echo,不会弹出凭据框,失败时提示克隆认证失败。 - 超大仓库首次克隆与
git log --all可能较慢,克隆过程无进度条。 - 经域名或反向代理访问时,若 Host 不在回环、本机绑定或
trustedHosts内会 403,需将对应 Host 加入--trusted-host。
安装与使用前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你对权限与安全的要求。
结尾¶
dsh-git-heatmap 将多仓库提交汇总为日 / 月 / 年热力图,刷新只动远程裸克隆,本地仓可在面板内安全地提交与推送(无 force)。目录页:https://www.skillhub.cn/plugins/bmdoctor7/dsh-git-heatmap;文档与 Issue:https://github.com/bmdoctor7/dsh-git-heatmap。