web-dev-qa-db-ja.com

ユニゾンとの競合の自動解決

次の行で nison を使用して(OSXの)2つのフォルダー間にカスタム自動同期を設定しました:

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)
3
geotheory

私はタイムスタンプをあきらめ、引数を追加することで1つのバージョンを優先することに決めました

-prefer /path/to/folder1

競合を解決します。

3
geotheory

これが役立つと思います。バージョン2.48.4での変更点:

競合する変更が発生した場合に上書きまたは削除されるファイルのコピーを作成するために、「copyonconflict」設定が追加されました。 (これにより、「repeat = watch」および「prefer = newer」設定と組み合わせて、継続的に同期するときに、かなり安全な方法で競合を自動的に解決することができます。

0
Claudio Antonio