GitHub 上简单搜了下有这些
但这些轮子都缺少冲突检测的功能,以及依赖于 inotify
来实现对文件移动的检测(检测到文件移动后我们就可以在服务器端同样移动一下而不用重新上传)。我没有下载尝试,但阅读代码后发现以上解决方案执行的操作都是,先把服务器上的内容下载下来,覆盖掉本地内容,然后检测文件系统的改变并实时上传,直到下一次同步的时候再用云端内容覆盖掉本地内容。
我希望实现 Windows 下官方客户端的功能。
daemon
进程。因为如果程序的正常工作依赖一个驻留进程的话,总是担心这个进程有没有运行、没有运行是不是数据就不一致了这样的问题很难受的OneDrive 提供了这些接口:
然而微软没有提供“告知客户端,云端文件有修改”这样的接口,导致 daemon
方案的必要性大大降低。同时微软也没有提供批量上传文件的接口
对两棵树进行 diff
操作的算法是什么?
我想要尽量简明地对本地文件有哪些修改进行描述。我们知道,我们执行 git mv
命令之后,查阅提交内容,git
会告诉我们移动了一个文件。这很容易让我们理解为 git mv
命令在 Git 的数据库里面写入了一条“用户移动了文件”的记录。但是,据 Pro Git 所述
Unlike many other VCS systems, Git doesn ’ t explicitly track file movement. If you rename a file in Git, no metadata is stored in Git that tells it you renamed the file.
The only real difference is that
git mv
is one command instead of three — it ’ s a convenience function.
我很好奇这样的操作是用什么算法完成的。
如何尽量多地自动解决冲突,尽量少地提醒用户解决冲突?
依前文所述,微软提供了云端文件树的增量描述,如果前一个问题解决了,我们也得到了本地文件树的增量描述。那么问题来了,如何对两个“增量描述”进行比较,并检测冲突?
更基本的一个问题,如何描述这样的文件树,如何规划数据结构?
正如很多资深苹果用户一样,我是曾经个资深微软用户,许多重要的文件在 OneDrive 上有一份存档,OneDrive 的空间也比较大。但由于 Windows 10 不断地让我失望,它从我的启动分区消失已经有一年多了。由于众所周知的原因,使用 OneDrive 客户端比使用网页版方便且稳定得多(虽然都不咋地)。我不是计算机相关专业的,因此我认为我可能欠缺不少基础知识,希望各位能多多指教,非常感谢~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.