2012-03-15 54 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命令獲取三個文件路徑,比較前兩個的大小,並將其複製到第三個路徑。