灵活的合并命令,用于统一选择较新或较旧的文件?

时间:2012-03-15 09:14:14

标签: merge synchronization backup bidirectional

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

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

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

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

例如,对于日志文件,我只想用以下内容插入行:

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

问题:对于* .last文件,什么合并命令总是支持旧版本?

对于* .rb * .sh和其他源文件,我不打算合并但总是选择较新的版本以防出现冲突。默认情况下,我可以使用prefer = newer 全局选项执行此操作。

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

1 个答案:

答案 0 :(得分:1)

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

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