覆盖 Dropbox Core 中的文件会产生冲突的副本

Posted

技术标签:

【中文标题】覆盖 Dropbox Core 中的文件会产生冲突的副本【英文标题】:Overwriting File In Dropbox Core Produces Conflicted Copies 【发布时间】:2015-04-02 10:48:35 【问题描述】:

我正在尝试将上传的文件覆盖到 Dropbox。 Dropbox 没有替换文件,而是不断添加另一个 conflicted copy, 我已经使用

获得了文件的元数据
for (DBMetadata *file in metadata.contents) 
            NSLog(@"    %@ metadata %@", file.filename,file.rev);

        

打印myFile.sqlite metatdata 5372f37f73G

我正在上传文件:

[restClient uploadFile:@"myFile.sqlite" toPath:@"/Data" withParentRev:@"5372f37f73G" fromPath:filePath];

检查How to overwrite file with parent rev using Dropbox API in ios?

How to avoid "conflicted copy" when uploading to dropbox from iOS client

dropbox keeps creating conflicted copies ios sdk (core api)

我在这里错过了什么?

【问题讨论】:

您确定这是最新的rev 值吗?如果文件已更改,rev 将更改,因此如果您使用的是旧文件,则会得到一个冲突的副本。另外,请确保您选对了。即,确保您没有为其他文件或文件夹复制 rev。看起来您在这里的帖子中可能有错字。你在一个地方有“5372f37f73G”,但在另一个地方有“5372f37f73f”。 啊,我以为转速保持不变。是的,该行中的错字(键入而不是粘贴该位)。感谢您的评论,将报告调整我的代码... 没问题。 rev 更改以标识文件的每个版本,以避免不同客户端可能覆盖另一个客户端的数据的竞争条件。您可以在此处找到有关其工作原理的更多信息:dropbox.com/developers/core/docs#files_put 我仍然没有得到这个,我想在这里使用的正确转速值是多少?我如何获得新的转速值而不是旧的?加载后我可以使用委托方法访问它,但我假设这是旧值,因为我仍然遇到相同的冲突? rev 的“正确”值应该是您正在处理的副本的值,因为没有更好的术语。这个想法是你传递你认为是最新版本的rev,如果是这样,文件就会被覆盖。如果没有,就会产生冲突,因为版本历史已经有效地分支。因此,如果您下载文件、修改文件并上传新版本,您在上传时提供的rev 应该是下载时的rev 【参考方案1】:

我在- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata 中为其他任何人调用了错误的元数据文件夹

//Calls all files for your app folder
[self.restClient loadMetadata:@"/"];

//Calls a folder you created within your app folder
[self.restClient loadMetadata:@"/yourfolder"];

【讨论】:

以上是关于覆盖 Dropbox Core 中的文件会产生冲突的副本的主要内容,如果未能解决你的问题,请参考以下文章

使用 Dropbox 和 git 没有冲突

还有一封信导致 imread 中的访问冲突

SVN更新代码的时候会覆盖本地文件吗?

没有配置白名单,没有代码覆盖会产生错误

删除 Git 中的损坏名称(保管箱冲突副本)

SVN简介+搭建svn服务器客户端+项目发布与检出+冲突解决