Uniion 选项 `prefer=newer` 和 `force=newer` 之间有什么区别?

ard*_*bro 5 synchronization unison

Unison 手册的一部分force

您还可以指定-force newer(或-force older) 来强制 Unison 选择修改时间较晚(较早)的文件。在这种情况下,-times还必须启用该首选项。

我的理解是,当发生冲突时,将采用更新的文件版本。但还有其他选项prefer,也可以设置newer为。不幸的是,描述prefer很少,所以我不知道什么prefer=newer意思以及有什么区别?

Mik*_*rce 3

喜欢较新的

你的理解还不是很完整。当检测到某个文件的版本不同,并且其中一个文件只是另一个文件的更新版本时, Unison 会将较新的文件复制到另一个文件上。

现在,如果您在两台计算机上更新单个文件的每个版本而不在编辑之间同步,该怎么办?这两个文件都不是另一个文件的更新版本,因此 Unison 保留哪个文件是不明确的。这些文件据说是冲突的,Unison 会提示您选择一个文件(或者如果您设置了auto trueUnison 将跳过该文件)。该prefer newer选项将告诉 Unison 在这种情况下不要发生冲突,并假设具有最新时间戳的文件是您想要同步的文件。如果您希望 Unison 在后台运行,并使用auto true和 等选项,这一点很重要repeat watchprefer这是手册中的相关解释,请注意,仅当路径或文件冲突时才重要:

更喜欢xxx

包含偏好会-prefer root导致 Unison 始终以有利于 的方式解决冲突root,而不是寻求用户的指导。( 的语法与root首选项相同root,加上特殊值 newer 和older。)

此首选项将被preferpartial首选项覆盖。

仅当您确定自己知道自己在做什么时才应使用此首选项!


强制更新

对于force newer,看起来您错过了手册中引用的行之前的行:

包含该首选项force root会导致 Unison 解决所有差异(甚至是非冲突的更改)以支持 root。这有效地将 Unison 从同步器转变为镜像实用程序。

因此,虽然该prefer选项仅在存在冲突时同步文件(特别是文件已更改),但无论是否发生更改,force都会同步所有内容。