Configuré una sincronización automatizada personalizada entre 2 carpetas (en OSX) conunísonocon la siguiente línea:
unison folder1 folder2 -batch -debug update+
Lo cual funcionó bien hasta que encontré:
Synchronization complete at 12:01:44 (0 item transferred, 1 skipped, 0 failed)
skipped: example.txt (contents changed on both sides)
Me gustaría que el comando sincronice automáticamente la versión más reciente. Buscando en las opciones:
$ 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
.. lo que sugiere que la única forma de resolverlo es con -prefer
, pero es posible que me esté perdiendo algo. ¿Es posible especificar la versión mediante marca de tiempo?
EDITAR: Todos los bits relevantes del informe de sincronización:
[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)
Respuesta1
Renuncié a la marca de tiempo y me conformé con priorizar una versión agregando el argumento
-prefer /path/to/folder1
que resuelve los conflictos.
Respuesta2
Creo que esto ayudará. Como cambios en la versión 2.48.4:
Se agregó una preferencia de "copia en conflicto" para hacer una copia de archivos que de otro modo se sobrescribirían o eliminarían en caso de cambios conflictivos. (Esto hace posible resolver conflictos automáticamente de una manera bastante segura cuando se sincroniza continuamente, en combinación con las preferencias "repetir = mirar" y "preferir = más nuevo".