RepoFlow Hub

面向独立开发者的多仓库 Git 管理桌面工具

作者 · 樂創
当前没有关联任何账号。登录后才会读取仓库列表。凭据保存在本机系统密钥链,静态站点不保存、不转发任何令牌;离线 Windows 版无需登录,也不访问网站。
· 使用者自带应用凭据(BYOA):Client ID 可公开,密钥不进静态文件
工作区 / 全局驾驶舱
全局驾驶舱
一次看清所有仓库的本地状态、远端状态与体积风险。数据来自本机 <WORKSPACE> 只读扫描。
实测快照 · 2026-11-06 14:37 · 6 个仓库
今日洞察 · 1 个体积风险 + 1 处提交规范缺口
「demoAssets」93 MB 且未启用 LFS 追踪;6 个仓库最近提交多为「更新 / 改变」自由文本。这两个入口在本原型里都可以直接操作。
删减与清理 · 大文件体检
扫描历史快照中的大体积文件,评估 Git LFS 迁移与仓库瘦身的收益。
发现 1 个高体积仓库
实测结论:「demoAssets」仓库 .git 目录 93 MB,仅 6 个受版本控制的文件,其中最大单个 PDF 为 74.5 MB;文件名中还包含换行符。当前 git-lfs 3.7.1 已安装,但 6 个仓库均未配置 LFS 追踪(demoTool 的 .gitattributes 只有换行符规则)。这是本设计方案里投入产出比最高的落地点。
历史快照大文件清单
git ls-tree -r -l HEAD · 勾选后实时计算收益
全选 LFS 候选
文件仓库体积建议
已勾选 0 个文件合计 0 MB
迁移收益预览
按左侧勾选结果实时计算;仅新提交生效,历史需另行重写。
当前 .git93 MB
LFS 迁移后(新提交)≈ 93 MB
待追踪文件0 个
合计体积0 MB
GitHub LFS 配额占用0%
历史重写(强制推送)需二次确认
生成的 .gitattributes 与命令
勾选左侧文件后生成。
设计约束:历史重写会改变所有提交哈希,必须强制推送,且会影响其他克隆。原型把「LFS 追踪(可逆)」与「历史重写(不可逆)」拆成两个入口,后者要求显式二次确认 + 自动备份 bundle。
git lfs track "*.pdf" → git add .gitattributes → git commit
另外两类误提交
demoFw · Keil .pack/*.svd工具链缓存
demoSite · preview/*.png设计截图
demoTpls · CMSIS .h源码,勿清理
清理助手必须区分「工具链产物 / 素材 / 第三方源码」,不能只按体积阈值排序——否则会误删 1–2 MB 的芯片头文件。
提交辅助 · 规范提交生成器
实测 6 个仓库最近提交多为「更新 / 改变」自由文本。这里按 Conventional Commits 生成,并扩展硬件 / 固件两类自定义前缀。
纯前端生成 · 不写入任何仓库
构建提交信息
实时预览
为什么先做这个功能
本机 6 个仓库最近提交里只有 2 条带 docs: / chore: 前缀,其余为「更新」「改变」等自由文本。规范提交模板零依赖、当天可用,且能直接改善跨仓库时间线可读性;相比之下交互式变基在当前全线性 main 分支上没有使用场景。
提交工作台
暂存变更 → 通过 pre-commit 门禁 → 生成规范提交 → 提交 / 推送。原型模拟执行,不写入任何本地仓库。
门禁 7 项 · 模拟执行
工作区变更
demoFw · main
已暂存 0 个文件
提交动作
pre-commit 门禁
提交前自动执行 · 7 项
未运行
暂存→格式化 / 语法 / 测试→提交→推送→CI 编译→Release
门禁设计:格式化钩子排除 Drivers/ / Middlewares/ / CMSIS 第三方源码(各工程 .clang-format 文件头明确要求);check-added-large-files 拦截 > 2 MB 新文件,直接对应 74.5 MB PDF 误提交;编译与单元测试只在检测到 CMakePresets.json / CTest 目标时执行,没有目标就明确跳过,不伪造通过。
提交历史与删除
支持「新增一次提交」与「删除某一次提交记录」。删除按风险分三档,先预览影响再生成命令。
demoFw · 6 条历史
安全边界:本机 6 个仓库远端全部在 GitHub、当前分支均为 main 且工作区 clean。删除已推送的历史提交会改变其后所有提交哈希,必须 push --force-with-lease,并影响其他克隆。原型把三档拆开,高风险档要求输入仓库名 + 确认已导出备份,且不执行任何写操作。
提交历史
第 1 条为本机真实最近提交,其余为演示历史节点
删除选中的提交记录
三种语义的风险差异极大,先选档再看影响预览。
影响预览
生成的命令(可复制,原型不执行)
CI 与提交钩子
GitHub Actions 免费 CI 编译固件并生成 Release 包;pre-commit 在提交前做格式化、语法检查与单元测试。
公开仓库分钟数不限 · 私有 2000 分钟/月
关键结论:demoFw 不能直接上免费 CI
该仓库 4 个子工程均为 Keil MDK-ARM / EIDE,armcc 商业授权且仅 Windows,Linux runner 无法编译,且 .eide/ 被忽略、工程配置不入库。demoTpls 的 8 个 CMake 工程带 toolchain + preset + 链接脚本,可直接编译;ESP_S3_Demo 需 ESP-IDF 容器。
工程可构建性矩阵
工程仓库工程类型工具链CI 可编译性依据
GitHub Actions 工作流
配置预览(可复制 / 下载,内容来自 templates 目录)
Release 产物
打 v* 标签时由 release 任务生成。
pre-commit 钩子清单
账号与授权
支持其他使用者关联自己的 GitHub / Gitee 账号。开源版本采用 BYOA(自带应用凭据)与系统密钥链,不内置任何共享密钥。
0 个账号
安全边界:原生桌面程序属于公共客户端,无法安全保管 client_secret。GitHub 官方推荐带 PKCE 的授权码 + loopback 回调,并明确不推荐无故启用设备流;Gitee OAuth 授权码流程则必须携带 client_secret(放请求体),因此开源版本由使用者自带应用凭据,密钥只存系统密钥链。本原型不发起任何真实网络请求、不读取或存储真实令牌。
已关联账号
切换当前账号会改变驾驶舱可见的仓库集合,每个账号使用独立缓存命名空间。
认证方式对照
方式需要密钥令牌/流程结论
添加账号(登录向导)
BYOA · 自带应用凭据
授权 URL 预览(可复制)
开源分发不内置共享 client_id/secret:维护者可选择在 CI 构建时注入公开的 client_id,但任何密钥都不得进入版本控制。环境变量样例见 templates/.env.example,账号注册表见 templates/config/accounts.example.json。
平台与同步
公开库与私有库统一管理,GitHub 与 Gitee 多远端同步、分叉检测与逐远端结果。所有远端写入需明确授权。
GitHub 已连接 · Gitee 未绑定
调研结论先行:Gitee 官方「仓库镜像管理」最短间隔 5 分钟、不支持 Git LFS、会覆盖目标仓库的分支/标签/提交,且双向镜像官方标注有代码丢失风险;Git 的「单 remote 多 pushurl」虽然能一条命令全推,但 fetch 只认第一个 URL、错误信息堆叠、认证过期难定位。因此默认采用独立 remote 分别推送。
托管平台与账号
可见性与权限
同步策略
三档各有适用边界,选择后生成对应命令。
生成的命令(可复制)
仓库远端矩阵
实测态只有 GitHub 单远端;演示态展示多平台状态
仓库可见性GitHubGitee同步状态
逐远端执行结果
每个远端单独记录状态、耗时与错误,避免多 pushurl 的错误堆叠。
冲突与改写约束
在任一平台单独执行过 force-push(强制推送)后,两边 main 会分叉。同步前必须分别 git fetch 比对;工具把「分叉」标为阻断状态,不自动覆盖任一远端。历史重写类操作仍沿用三档安全模型与二次确认。
功能缺口盘点
对照原设计 6 模块与本机实测状态,列出还缺什么、本轮补了什么、以及明确不做什么。
网上成功案例调研与设计依据 本轮新增
下列结论来自本轮公开资料检索,逐条标注采用与否及理由;不把竞品做法原样照搬。
主题来源调研结论本项目决策理由
通知中心
聚合 Actions 运行结果、合并请求、问题回复与本地检测告警。实测态只显示本机可判定的告警。
0 条未读
消息列表
点击条目标记已读并跳转到对应模块
全部标为已读
接入说明
本机未安装 gh 命令行工具,GitHub 侧通知需通过 REST/GraphQL(接口)配合系统密钥链中的令牌拉取,并处理每小时 5000 次限流与私有仓库权限范围。令牌不落盘明文。
实测态只展示本机可判定的告警(仓库体积、工程可构建性、已有 CI);切换「演示态」可查看完整的 Actions / 合并请求 / 问题回复聚合效果。
最近一次失败运行的日志
项目集群联动
把硬件资料、固件工程、MCU 模板与上位机绑定为一个整机版本,记录跨仓库提交对应关系。
电源项目集群 · 4 个仓库
版本对应矩阵
短哈希来自本机 git log 实测
v1.2 基线
角色仓库提交版本说明
生成整机版本快照
快照记录 4 个仓库此刻的提交组合,用于整机发布时回溯。
原型快照保存在内存态,刷新页面后清空。真机建议落到 .repoflow/snapshots.json,并明确「某仓库回滚时快照如何处理」的失效规则。
开发数据
全部数值由本机 6 个仓库的只读扫描结果确定性计算,没有随机或估算数据。
各仓库 .git 体积(MB)
各仓库受控文件数
分组分布
提交活跃日期(实测)
性能体检 本机实测
反直觉结论:本机 ,6 个仓库的 git status 中位数只有 27–50 ms,且全部未启用 fsmonitor。网上「两行配置把 17.6 秒降到 0.8 秒」对应的是 30 万文件级仓库;在当前规模下照搬并不解决瓶颈。真正的开销在逐仓串行扫描、远端 API 限流与大列表渲染。
只读测量(3 次中位数)
git --no-optional-locks status --porcelain
仓库受控文件statusfsmonitoruntrackedCache
优先落地的效率策略
Git 侧加速配置(规模上升后可选)
渲染性能 本轮实测
测量口径:无头浏览器在同一份源码、同一会话内切换优化开关,注入 500 个仓库形成 506 条压力数据,统计 DOM 节点数、卡片数与已渲染视图数。
前后对比
指标关闭优化(同源对照)启用优化(当前)变化
DOM 预算
调研建议控制在 800 节点(理想)/1400(上限)以内。
测量中—
落地的优化
模块规划
原设计 6 模块中尚未做成交互功能的部分,按模块分页查看落地优先级与依据。
已选 0 个仓库
快捷键与操作提示
按 Esc 关闭
所有批量操作、提交与历史删除均为原型模拟,不会写入任何本地仓库。
ESC
↑↓ 选择Enter 执行Esc 关闭