问题标签 [merge-conflict]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
16 浏览

ios - 如何实施 CoreData 自定义合并策略?

我的应用程序使用 CoreData + CloudKit 同步。一些 CoreData 实体Item可以通过 iCloud 的共享数据库共享。该应用程序仅使用 1 NSPersistentContainer,但它具有 2 NSManagedContexts、 thevisualContext和 a backgroundContext
因此,在保存上下文期间,可能会出现两种类型的合并冲突:1)如果两个上下文都尝试Item在不同的状态下保存相同的内容,以及 2)如果我的持久容器和 iCloud 同步尝试Item在不同的状态下保存相同的内容。

Item有一个属性updatedAt,并且应用程序要求始终Item保存最后更新的版本。
出于一致性原因,我不能按属性合并。只能存储完整Item的对象,要么存储在托管上下文中,要么存储在托管上下文中,或者持久存储。
但是不能使用标准的合并策略:NSRollbackMergePolicy忽略托管上下文中的更改,并获取持久副本,同时NSOverwriteMergePolicy用托管上下文中的对象覆盖持久存储。但我必须使用Item最新的updatedAt. 因此我必须使用自定义合并策略。

很难找到任何提示如何做到这一点。我找到了两个带有演示代码的教程。最好的一本是 Florian Kugler 和 Daniel Eggert 所著的Core Data一书,其中有一个关于自定义合并策略的部分,以及此处的相关代码。另一个是 Deepika Ramesh 的帖子,其中包含代码。但是我不得不承认,我并没有完全理解这两者。但是根据他们的代码,我尝试设置自己的自定义合并策略,该策略将分配给mergePolicy两个托管上下文的属性。这里是:

我的第一个问题是这段代码是否有意义。我问这个是因为合并冲突很难测试。
具体来说,我显然必须使用 中的任何标准合并属性super.init(merge: .overwriteMergePolicyType),尽管显然哪个并不重要,因为我使用的是自定义合并冲突解决方案。

0 投票
0 回答
50 浏览

git - 为什么git在合并期间认为对相邻行的不相关更改是冲突的?

如何修复 git 以便它自动合并相邻行中的非冲突更改?例如,我有两个来自dependabot 的合并请求,其中更新了Cargo.toml. 每个更新单行中不相关的版本号:结果我有合并冲突 - git的行为是将其视为冲突:

PS:我知道如何解决它 - 做了很多次。但我累了——在我对 mercurial 感到满意之前——它自己完美地解决了这些问题,但遗憾的是,由于生态系统,不得不改用 git。如何让这被视为非冲突?