私は2つのフォルダ(OSX内)間のカスタム自動同期を設定しました。ユニゾン次の行を追加します。
unison folder1 folder2 -batch -debug update+
次の問題に遭遇するまでは問題なく動作していました:
Synchronization complete at 12:01:44 (0 item transferred, 1 skipped, 0 failed)
skipped: example.txt (contents changed on both sides)
最新バージョンを自動的に同期するコマンドを希望します。オプションを確認します:
$ unison -help | grep conflict
-auto automatically accept default (nonconflicting) actions
-copyonconflict keep copies of conflicting files
-prefer xxx choose this replica's version for conflicting changes
.. これは、解決する唯一の方法が を使用することを示唆しています-prefer
が、何かが欠けている可能性があります。タイムスタンプでバージョンを指定することは可能ですか?
編集: 同期レポートの関連部分すべて:
[update+] Unchanged file
[update+] buildUpdateChildren(handleChild): example.txt
[update] buildUpdateRec: /path/to/folder1/example.txt
[update] checkContentsChange: archStamp is inode (3373366) / info.inode (3373748) / times: 1433242394.000000 = 1433242527.000000... false / lengths: 110602 - 110611
[update+] Double-check possibly updated file
[update] archive digest = (29c46acff8e661513ec7487bc0069c2b,) current digest = (cdc82c2519076f9e52486b1c881e179d,)
[update+] Unchanged file
[update+] buildUpdateChildren(handleChild): example.txt
[update] buildUpdateRec: /path/to/folder2/example.txt
[update] checkContentsChange: archStamp is inode (3373726) / info.inode (3373746) / times: 1433242452.000000 = 1433242515.000000... false / lengths: 110602 - 109400
[update+] Double-check possibly updated file
[update] archive digest = (29c46acff8e661513ec7487bc0069c2b,) current digest = (e12ef45f692808d50989ca4b08d8c27f,)
changed <-?-> changed example.txt
Synchronization complete at 12:23:37 (0 item transferred, 1 skipped, 0 failed)
skipped: example.txt (contents changed on both sides)
答え1
私はタイムスタンプをあきらめて、引数を追加して1つのバージョンを優先することにした。
-prefer /path/to/folder1
競合を解決します。
答え2
これが役に立つと思います。バージョン 2.48.4 の変更点:
競合する変更があった場合に上書きまたは削除されるファイルのコピーを作成するための「copyonconflict」設定を追加しました。(これにより、「repeat = watch」および「prefer = newer」設定と組み合わせて、継続的に同期するときに、競合をかなり安全な方法で自動的に解決できるようになります。)