Repository navigation
Moo Fleet 0.1.34
本次更新
这一版解决三件与「把一个项目接进来」有关的事:检出远端分支不再被一个过严的门槛挡住,加入新仓库不用再钻进设置里翻,私有仓库克隆失败时会当场问你要账号。
检出远端分支不再要求工作区干净
以前「检出」按钮经常是灰的,即使你只是多了几个未跟踪文件。原因不是渲染出错,而是客户端与服务端都硬性要求工作区完全干净,判据里连未跟踪文件都算。
这个门槛站不住:git switch --track --create 和切到已有本地分支是同一种操作——能兼容的本地改动与未跟踪文件会被一起带过去,只有会覆盖本地内容时才拒绝,而且拒绝时分支引用、HEAD 与工作区三者都不变。
现在交给 Git 判断:
- 有改动也能检出,兼容的改动随分支带过去;
- 会覆盖本地内容时 Git 拒绝,界面说明原因,本地内容完好;
- 未解决冲突、进行中操作、只读、Worktree 占用、远端引用漂移这些护栏一个都没放宽;
- 「创建并切换」仍然要求干净工作区,但确认弹窗里可以取消勾选,只创建分支引用。
首页就能加入仓库
此前仓库舰队首页没有任何「加入仓库」入口——正常路径是头像 → 设置 → 「仓库接入」→ 滚过配置目录与扫描,才轮到克隆。克隆是加入新项目最深的一步,而它本身只是一个自包含表单。
- 批量操作那一行的右端常驻「添加仓库」与「克隆远端」,与列表同屏可见;
- 两者都是偶尔用一次的动作,所以默认无边框、无底色、用弱化文字色,只在悬停或键盘聚焦时显形;
- 克隆改成独立弹窗:选根目录、填地址、按回车即可,成功后收起并提示,失败时错误留在弹窗里;
- 设置里的「03 克隆远端仓库」已删除,克隆只有这一个入口,扫描列表下方留了一句指向。
顺带修掉两处真实缺陷:只有一个扫描目录时,表单仍停在「请选择要克隆到哪个目录」(rootId 从来没有默认值);关闭弹层后键盘焦点落到页面根部,要重新 Tab 一整圈才能回到触发按钮。
克隆私有仓库失败时,当场补填凭证
GIT_TERMINAL_PROMPT=0 之下,缺凭证的克隆只会得到一句 could not read Username,以前这句话就那样躺在弹窗底部,得自己猜到是认证问题、再去设置里找凭证入口。
现在按失败类型给下一步,而不是每次克隆都先问一遍账号:
| 失败类型 | 界面反应 |
|---|---|
| 该主机还没有凭证 | 就地展开「用户名 + 访问令牌」,主机预填、焦点直接落在用户名;保存进系统钥匙串后自动重试一次 |
| 已保存的凭证被拒绝 | 同一表单,提示可能已过期,用户名保留、令牌框清空 |
| SSH 主机指纹未信任 / 公钥被拒 / 主机名解析失败 | 只给准确指引(如 ssh -T git@主机),不摆一个填了也没用的表单 |
| 未加密的 http 地址 | 提示改用 https——凭证按 protocol=https 存取,填了也命中不了 |
- 凭证存在系统钥匙串,Moo Fleet 不保存副本,也不写进仓库配置;
- 地址一改,补填面板就收起、上一次的失败信息一并清掉,避免把令牌存到另一个主机;
- 面板展开时底部只留「取消」,「保存并重试」成为主按钮,不会再让你重复撞同一堵墙。
修复
- 克隆失败的错误行不再带 git 的进度前缀(
Cloning into 'x'...)与fatal:,只留原因。 - 禁用按钮上挂
title是无效的(禁用控件不派发鼠标事件,弹不出 tooltip),改为内联说明。
说明
- macOS 包为 ad-hoc 签名的内测包,未经公证;请用 DMG 内的「安装 Moo Fleet(内测)」,不要手动拖进「应用程序」(下载隔离属性会导致应用无法启动)。Apple Silicon 与 Intel 请选对应架构的 DMG。
- Windows 与 Linux 包未做代码签名,首次运行可能触发系统警告。
- 本版没有新增遥测或网络请求;凭证只在本机钥匙串与 git 之间流转。
验证
- 类型检查、104 文件 / 880 用例、生产构建全部通过;新增
clone-auth.test.ts14 项,branches.test.ts换成两条真实 Git 用例(兼容改动随分支带走、冲突时拒绝且仓库三者不动)。 - 检出放宽在临时 bare 仓上逐场景实测:未跟踪文件与兼容改动都带过去、upstream 正确建立;远端与本地对同一文件各有版本时拒绝,仍在原分支、未创建新分支、本地内容完好。
- 克隆补填跑的是出厂产物:用已安装包自带的 Node 与 server bundle 起隔离实例,对端是一个要求 Basic 认证的真 HTTPS Git 服务。首次克隆展开面板并聚焦用户名 → 填错令牌转「凭证被拒」→ 改对令牌后不弹二次确认、克隆成功、仓库入列,钥匙串与
origin/main跟踪都核对过。 - 四个桌面包的载荷结构、版本、架构与体积全部通过校验;macOS 两包为 ad-hoc 签名,Windows/Linux 未签名。