Configurei uma sincronização automatizada personalizada entre 2 pastas (no OSX) comuníssonocom a seguinte linha:
unison folder1 folder2 -batch -debug update+
O que funcionou bem até que encontrei:
Synchronization complete at 12:01:44 (0 item transferred, 1 skipped, 0 failed)
skipped: example.txt (contents changed on both sides)
Gostaria que o comando sincronizasse automaticamente a versão mais recente. Olhando nas opções:
$ 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
.. o que sugere que a única maneira de resolver é com -prefer
, mas posso estar faltando alguma coisa. É possível especificar a versão por carimbo de data/hora?
EDIT: Todos os bits relevantes do relatório de sincronização:
[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)
Responder1
Desisti do carimbo de data e hora e decidi priorizar uma versão adicionando o argumento
-prefer /path/to/folder1
que resolve os conflitos.
Responder2
Eu acho que isso ajudará. Conforme alterações na versão 2.48.4:
Adicionada uma preferência "copyonconflict", para fazer uma cópia de arquivos que de outra forma seriam substituídos ou excluídos em caso de alterações conflitantes. (Isso torna possível resolver conflitos automaticamente de uma forma bastante segura durante a sincronização contínua, em combinação com as preferências "repeat = watch" e "prefer = newer".