Skip to content

Alpha File Manager v3.4.0

Choose a tag to compare

@kizemo kizemo released this 22 Oct 02:35
· 44 commits to main since this release

3.4.0:左右两格能对比了,判不准的绝不乱动

3.4.0 加了两个东西:并排比较两个目录并按结果同步,以及侧边栏里的
「添加网络驱动器」入口
。前者是这个 fork 目前最大的一块新功能。

如果你之前在 3.3.0,这一版不需要任何操作 —— 它是纯增量,没有改动既有行为。

先说清楚这个功能不做什么

它永远不删东西。 同步会补上缺失的文件、更新更旧的那一份;只在目标侧存在的
东西会被报告出来,而不是删掉。想做「镜像」(两边完全一致,多出来的删掉),
留到后面的版本。

这是刻意的。比较目录这个动作本身就容易搞错方向,一旦带上删除,一次误判就是
不可逆的数据损失。第一版先把「看清楚」和「动手」分开。

并排比较

把导航器分成左右两格,工具栏上就多一个「比较并同步」按钮。点开是三步:

第一步,设置。 左右两侧要比的目录(默认取两格当前所在的位置)、比较准则、
排除规则。

准则是这样生效的,顺序照抄 WinSCP:

  • 先看修改时间。时间不一样就按时间判,大小根本不看。
  • 时间一样,再看文件大小。
  • 还一样,再看内容校验和。
  • 一个准则都不勾,判据就是「两边都有这个文件」—— 于是只报出真正新增的条目。

还有一档「区分大小写」,给那些会改名字大小写的服务器用。

排除规则一行一条,支持 * 和 ?。命中的目录整棵子树都不参与比较。

第二步,结果。 一棵差异树,加上统计条与状态筛选。

树而不是平铺列表是有意的:整个子目录只在一侧存在时,它应该显示成一个子树,
而不是一堆没有上下文的散名字。状态分九种 —— 相同、仅左侧、仅右侧、左侧较新、
左侧较旧、大小不同、内容不同、类型不同、无法判定。

第三步,预览与执行。 先给你看清单:将要新建哪些目录、复制哪些文件、跳过哪些。
看完再点「开始同步」。同步在后台跑,有进度条,随时能取消;失败的条目单独列出来。

判不准的时候,它会直说

这是这一版最要紧的一条设计。

两个文件时间戳一样、内容不同,是最难办的一种情况:左边那份并不比右边旧,
可它们又不是同一个文件。这种情况下自动同步必然有一边被覆盖掉,而且覆盖的是
哪个,取决于实现里的某个隐含约定。

Alpha File Manager 把这类标成**「方向待定」**,原样放着。它们会被单独列在
「跳过」里,等你自己决定。不自动覆盖。

同样的处理适用于「一边是目录、一边是文件」这种结构冲突 —— 那时候目标侧根本没有
落脚点,硬做只会产生一堆必然失败的错误。

侧边栏里的「添加网络驱动器」

侧边栏底部的盘符列表末尾,多了一个虚线框的按钮 —— 添加网络驱动器。

这就是 Windows 资源管理器给了很多年的那个入口,也是你真正会去找它的位置:
盘符多了、或者想临时挂一个共享的时候,从那儿点一下最顺。

选共享、选盘符(留空则由 Windows 自动分配),挂上之后盘符就出现在侧边栏里,
跟别的盘一样。协议在 Windows 上只列 SMB —— sshfs 要装 WinFSP、nfs 要开
Windows 的功能,摆出来点一下必然失败,不做那种「摆出来再说」的事。

顺带修掉的一个真问题

映射网络驱动器之后,应用报出来的盘符多半是空的。原因是它在 Windows
net use 的输出里找 "assigned" 这个词 —— 而 Windows 真正打印的内容里
根本没有这个词(本机实测输出是「Drive Z: is now connected to ...」)。
盘符明明挂上了,报出来的却是空的。

现在改成直接问 Windows:哪个盘符指向那个共享。这跟 Windows 的语言、
输出表格的列宽、以及远程路径里带不带空格都无关。

这一版是怎么验的

每一项都在装机包上量过,不是在开发构建上:

  • 比较并同步跑通完整一轮:自造左右两棵目录树(靶子全部自造,不用用户真实目录),
    比较 → 看差异树 → 看预览清单 → 执行 → 核对落盘结果。
  • 「方向待定」这一档单独验过:造两个时间戳相同、内容不同的文件,确认它们
    没有被覆盖,而是进了跳过清单。
  • 网络驱动器映射:自建 SMB 共享 → 侧边栏点「添加网络驱动器」→ 挂载 →
    盘符出现在侧边栏 → 卸载 → 复原现场。
  • 「取消」单独验过:把靶子放大到 3.84 GB,同步传到一半点「取消」,
    确认文件数停在原地不再增长,报告里标注「已取消」。

这个版本不是什么

  • 不含删除、不含镜像。 见上。
  • 不含内容校验和的远程比对。 RemoteProvider 没有 checksum 的概念,FTP 也没有
    标准校验和命令。开了校验和准则而有一侧是远程时,结果会如实标成「无法判定」,
    而不是假装两边一样。阶段 A 的界面也不暴露这个开关。
  • 不含断点续传、不含导出清单。 计划里的三期排期里,这些在阶段 C。

完整清单见更新日志。


构建信息

  • 版本号:3.4.0
  • 安装包:Alpha_File_Manager_3.4.0_x64-setup.exe
  • 大小:20455261 字节
  • SHA-256:f85d160ab207cb01ffe9efa1c225d9ef1f3c61b914f146da8ad78afc4dcc534c