Авторазрешение конфликта с унисон

2209
geotheory

Я создал пользовательский автоматическую синхронизацию между 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) 
2
Я могу понять, почему отметки времени не предлагаются для разрешения конфликтов: если тривиальные изменения в одной системе внесены после значительных изменений в другой, вы ** не ** захотите сохранить более позднюю версию. AFH 8 лет назад 1
Честная оценка. Но вы могли бы подумать, что может быть какой-то способ различения существенных изменений, таких как, например, изменение количества строк в файле. geotheory 8 лет назад 0
За исключением того, что текстовые файлы в настоящее время находятся в меньшинстве, с преобладающими медиа и офисными файлами, и они почти все двоичные. В любом случае существенное редактирование текста не может изменить количество строк в файле, поэтому используется «дайджесты контента» (вероятно, производные от CRC32), где наименьшее изменение в исходном файле приведет к совершенно не связанному дайджесту. Без сохранения третьей копии каталогов после синхронизации невозможно определить, какие изменения были незначительными после обновления обоих файлов. AFH 8 лет назад 0
Драт и скрипка geotheory 8 лет назад 0

1 ответ на вопрос

2
geotheory

Я отказался от отметки времени и решил расставить приоритеты для одной версии, добавив аргумент

-prefer /path/to/folder1 

который разрешает конфликты.

Похожие вопросы