跳到主要内容

~/posts · 2026.11.07

存储库要升级,至少先告诉我一声

把打开时的版本检查和实际迁移拆开,确认以后才改共享数据。

2 分钟 devshan

内容引用改完以后,旧库要迁移到新结构。最初我让它在打开时自动完成,开发时很省事,但放到多设备上有点突然:电脑开了一下,手机里的旧应用再进来就不兼容了。

现在打开先验证密码、读数据版本。能用就进入,需要迁移则停在确认界面,提供“开始升级”和“退出应用”。版本比当前应用更新时,提示更换客户端并停止读取。返回键、遮罩和 Escape 都留在这个流程里。

点开始以后,手机和桌面调用 Go 核心的同一个迁移入口。普通文件操作、后台同步和回收也先检查版本,等升级完成才继续写入。

我试了中途写入失败、重试,以及两个核心同时确认升级。全部处理成功才更新版本号,重复调用返回同一结果。附件密文和原认证上下文保留,这次只改必要元数据。

目前还没正式公开,迁移代码只保留上一版到最新版。有了正式发布的数据版本,再逐步保留相应升级链。

几个版本各自保存

应用的 1.2.x 表示发布版本,Android versionCode 决定安装升级顺序,存储库版本记录数据结构。本地缓存还有自己的 schema,可重建时直接重建,配置和草稿单独保留。

更早的旧客户端没有版本检查能力,仍需要使用者手动更新。新客户端从打开存储开始检查,后续再变更格式时就有提示和确认的位置了。