2012-03-15 56 views
2

我一直在使用unison作为我选择的文件同步器,而且生活一直很棒。灵活的合并命令可以选择更新或更旧的文件吗?

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

然而,当每个主要合作伙伴都无法到达时,如果有四个根源互相失败,我开始推动这个工具的局限性。出现冲突会导致所涉及文件的自动同步停止。我的业务逻辑的各个方面分布在不同的主机上,这些主机在运行时有时会修改相同的文件。

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

例如日志文件只有我喜欢和他们插线:

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

问:对于*。去年仅文件,什么合并命令总是青睐旧副本?

对于* .rb * .sh和其他源文件,我不打算合并,但总是在发生冲突时选择较新的版本。尽管如此,我可以通过默认选项prefer = newer全球选项。

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

回答

1

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

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