К сожалению, похоже, что Unison (один) не может легко это сделать. Из использования ignorenot xxx
в руководстве Unison :
В частности, вставка
ignore = Path *
вашего профиля и последующее использованиеignorenot
для выбора определенных путей для синхронизации не будут работать. Вместо этого вы должны использовать предпочтения пути, чтобы выбрать определенные пути для синхронизации.
Поскольку это было именно то, что я имел в виду в качестве решения, это означает, что нет хорошего решения. Вот несколько полезных идей:
Вручную добавьте новый путь для каждого проекта : это как раз то, что предлагает приведенная выше цитата. Для каждого нового запускаемого проекта и каждого нового
src
каталога, который вы хотите синхронизировать, добавьте строкуPath = path/to/src
в свой профиль Unison.
Не обращайте внимания на файлы сборки и конфигурации . Может быть, все ваши файлы сборки и конфигурации имеют только несколько различных шаблонов, с которыми вы можете сравнивать? Вы можете сказать Unison игнорировать эти шаблоны, в частности, добавив что-то в свой профиль Unison, например:
ignore = Name *.o #ignore object files ignore = Name build #ignore paths that end with "build" ignore = Name {.*,*}.sw[ponx] #ignore pesky vim swap files ignore = ...
Напишите скрипт, который вам поможет : вы, конечно, можете написать скрипт, который ищет все названные каталоги
src
и вызывает Unison для них по отдельности. Но это кажется глупым. Вы могли бы написать скрипт, который помогает с пунктом (1) выше. Напишите скрипт, который найдет все названные путиsrc
и для каждого такого пути добавьте строкуPath = /path/to/src
в какой-то файл
AllThePaths
, а затем просто иметь строкуinclude AllThePaths
в вашем профиле Unison.