Я использовал unison в качестве моего синхронизатора файлов, и жизнь была великолепна.
По сути, я мог бы в любое время изменить любые файлы на любой стороне, не беспокоясь о том, кто главный и подчиненный и т. Д. Это двунаправлено.
Однако, когда четыре корня переходят друг на друга, когда первичный партнер каждого не может быть достигнут, я начинаю раздвигать границы этого инструмента. Возникают конфликты, которые прекращают автоматическую синхронизацию для задействованных файлов. Аспекты моей бизнес-логики распределены по разным хостам, которые иногда изменяют одни и те же файлы.
В игру вступает опция слияние в файле конфигурации. Он позволяет указывать разные команды слияния для разных типов файлов.
Например, только для файлов журналов. Мне нравится интерполировать их строки с помощью:
merge = Name *.log -> diff3 -m CURRENT1 CURRENTARCH CURRENT2 > NEW || echo "differences detected"
Вопрос: только для файлов * .last какая команда слияния всегда будет отдавать предпочтение более старой копии?
Для * .rb * .sh и других исходных файлов я не ищу слияния, но всегда выбираю более новую версию в случае конфликтов. Я могу сделать это по умолчанию с помощью опции prefer = newer
global .
Для файлов * .png я обычно предпочитаю сохранять меньший (оптимизированный) размер.