所有测试均在一台使用了8年的 MacBook Air 上运行。所有结果均来自作为一名独立开发者发布的7款 Mac 应用程序。非赞助观点。
HiyokoAutoSync 在 Android 和 Mac 之间进行双向同步。双向同步存在一个难题:当同一文件在两端都被修改时,会发生什么?以下是我的处理方式。
冲突情况
- 自上次同步以来,文件在两端均被修改——以哪个版本为准?
- 文件在一端被删除,在另一端被修改——是删除还是保留?
- 文件在一端被移动——在另一端也移动,还是视为“删除+创建”?
大多数同步应用程序会回避情况1和3。以下是我的方法。
检测冲突
在 SQLite 中跟踪上次同步的状态:
CREATE TABLE sync_state (
file_path TEXT PRIMARY KEY,
mac_hash TEXT,
android_hash TEXT,
mac_modified INTEGER,
android_modified INTEGER,
last_synced INTEGER
);
在同步检查时:
fn classify_file(record: &SyncRecord, mac_stat: &FileStat, android_stat: &FileStat) -> SyncAction {
let mac_changed = mac_stat.hash != record.mac_hash;
let android_changed = android_stat.hash != record.android_hash;
match (mac_changed, android_changed) {
(true, false) => SyncAction::CopyToAndroid,
(false, true) => SyncAction::CopyToMac,
(false, false) => SyncAction免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。