2

我一直在使用unison作为我选择的文件同步器,生活一直很棒。

本质上,我可以随时修改任何一方的任何文件,而不必担心谁是主从,等等。它是双向的。

然而,当无法到达每个根的主要合作伙伴时,四个根会相互故障,我开始挑战这个工具的极限。出现冲突,导致所涉及文件的自动同步停止。我的业务逻辑的各个方面分布在不同的主机上,它们在运行时有时会修改相同的文件。

配置文件中的合并选项开始发挥作用。它允许您为不同的文件类型指定不同的合并命令。

例如,仅对于日志文件,我喜欢将它们的行插入:

merge = Name *.log -> diff3 -m CURRENT1 CURRENTARCH CURRENT2  > NEW   || echo "differences detected"

问题:仅对于 *.last 文件,什么合并命令总是有利于旧副本?

对于 *.rb *.sh 和其他源文件,我不希望合并,但总是选择较新的版本以防发生冲突。不过,我可以默认使用prefer = newer global选项来做到这一点。

对于 *.png 文件,我通常更喜欢保持较小(优化)的大小。

4

1 回答 1

1

关于 .rb 和 .sh 文件,您可以preferpartial = Name *.rb -> newer对 .ssh 文件使用相同的和。对于 .last 文件,您可以older改用。

关于 .png 文件,您可以编写自己的合并命令来检查两个文件的大小。然后我会设置merge = Name *.png -> mycmp CURRENT1 CURRENT2 NEW,并让mycmp命令采用三个文件路径,比较前两个的大小,然后将其复制到第三个路径。

于 2013-07-02T13:54:18.790 回答