Похоже, что невозможно сделать именно то, что вы хотите. Когда Unison синхронизирует файл с каталогом, Unison может определить разницу между ними, но Unison не обращается к ним по-разному (например, путем добавления префикса /
к каталогам или чего-то еще) таким образом, чтобы пользователь мог сопоставить шаблон с одним или другой. Например, если вы синхронизируете каталог с именем deer
и файлом с именем phil
под корнем ROOT
, Unison увидит их с именем как
new dir ----> ROOT/deer new file ----> ROOT/phil
Вы не можете различить ROOT/deer
и ROOT/phil
. Вот некоторые предложения, хотя
Укажите вручную каталоги, которые вы хотите синхронизировать, добавив строку
path = deer
в свой профиль для каждого каталога. Я думаю, что это стандартный способ настройки Unison в любом случае. Затем для любых файлов в вашем корневом каталоге, которые вы также хотите синхронизировать, скажем, файл с именемphil
, вы можете перейтиphil
в каталог, который будет синхронизироваться,deer/synced-root-files/
и затем добавить символическую ссылку из этого файла обратно в ваш корневой каталог.cd ROOT; ln -s ROOT/deer/synced-root-files/phil
Придумайте соглашение об именовании в вашем корневом каталоге, с которым вы можете сопоставить шаблон. Например, назовите все и только файлы, которые вы не хотите синхронизировать
ignore.phil
, и добавьте строку в свой профиль Unisonignore = Path ignore.*
.
Вот ссылка на разделы « Спецификация пути» и « Игнорирование путей» в руководстве по Unison, чтобы будущие читатели могли легко найти его.