2

Я хочу синхронизировать содержимое всех подкаталогов данного корня, но только несколько файлов в самом корне. Для этого я хотел бы игнорировать все файлы, используя директиву ignore (сохраняя все подкаталоги), и повторно добавляя несколько файлов, которые я хочу сохранить, с помощью директивы ignorenot . Для этого я попробовал следующие две вещи:

  1. Добавление регулярного выражения для исключения любой записи в корне, содержащей косую черту, путем добавления ignore = Regex ^(?!.*\/).*$ в мой профиль. Но это приводит к появлению следующего сообщения об ошибке без дальнейшего объяснения:

    Malformed pattern "Regex ^(?!.*\/).*$"." 
    
  2. Сначала игнорируем все с помощью ignore = Name ?* и затем заново добавляем каждый путь, содержащий косую черту, с ignorenot = Path */* , который не работал должным образом , так как игнорирование каталогов не работает таким образом.

Кажется, это очень простая проблема, но я не могу разобраться с этим.

1 ответ1

0

Похоже, что невозможно сделать именно то, что вы хотите. Когда Unison синхронизирует файл против директории, Unison может сказать, разница между этими двумя, но Унисон не относится к ним по- разному (например, предваряя а / к каталогам или что - то) , таким образом , что позволяет пользователю модельную матче против один или другой. Например, если вы синхронизируете каталог с именем deer и файл с именем phil в корне ROOT , Unison увидит их с именем as

new dir  ---->      ROOT/deer
new file ---->      ROOT/phil

Вы не можете различить ROOT/deer и ROOT/phil . Вот некоторые предложения, хотя

  1. Укажите вручную каталоги, которые вы хотите синхронизировать, добавив строку path = deer в свой профиль для каждого каталога. Я думаю, что это стандартный способ настройки Unison в любом случае. Затем для любых файлов в корневом каталоге, которые вы также хотите синхронизировать, например, файл с именем phil , вы можете переместить phil в каталог, который синхронизируется, например, deer/synced-root-files/ а затем добавить символическую ссылку из этого файла обратно в ваш файл. корневая директория

    cd ROOT; ln -s ROOT/deer/synced-root-files/phil
    
  2. Придумайте соглашение об именовании в вашем корневом каталоге, с которым вы можете сопоставить шаблон. Например, назовите все и только файлы, которые вы не хотите синхронизировать, например ignore.phil , и добавьте строку в свой профиль Unison ignore = Path ignore.*

Вот ссылка на разделы « Спецификация пути» и « Игнорирование путей» в руководстве по Unison, чтобы будущие читатели могли легко найти его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .