Как игнорировать папки и их подкаталоги в синхронизации Unison
Я использую Unison для синхронизации проектов веб-сайтов на своих компьютерах, и на одном из моих компьютеров я хотел бы избежать одновременной работы с обоими папками, содержащимися в папках, которые я просматриваю:
/vendor
/node_modules
/storage/debugbar
/staroge/framework
Это профиль, который я использую для файла.prf, который я использую для выполнения синхронизации. Вы можете видеть, что папки находятся в строках игнорируемых путей.
# Roots of the synchronization
root = /Volumes/Data HD
root = ssh://Server//volume1/My Files
# Paths
path = Sites
# Some regexps specifying names and paths to ignore
ignore = Name */@eaDir
ignore = Name */_notes
ignore = Name .DS_Store
ignore = Name SyncToy_*.dat
ignore = Path */Archives
ignore = Path */tools
ignore = Name *.sublime*
# Ignore laravel composer and npm folders
ignore = Path {Sites/CRMJobs/node_modules}
ignore = Path {Sites/Loot/node_modules}
ignore = Path {Sites/Pompous/node_modules}
ignore = Path */vendor
ignore = Path */node_modules
ignore = Path */storage/debugbar
ignore = Path */storage/framework
log = true
times = true
auto = true
Вы можете видеть, что в некоторых случаях я даже явно упоминал полные патчи, чтобы игнорировать их, но они все еще синхронизированы.
Может кто-нибудь сказать мне, что я делаю не так?
2 ответа
Смотрите этот бит в спецификации пути в руководстве по Unison. Вместо Path
вы должны использовать Name
,
ignore = Name vendor
ignore = Name node_modules
ignore = Name storage/debugbar
ignore = Name storage/framework
Для этого я использовал одно большое регулярное выражение игнорирования, потому что все остальные подходы не работали. Если бы унисон поддерживал отрицательные просмотры, это было бы очень просто, но мне пришлось использовать эмуляцию через классы отрицательных символов, как описано здесь:
https://clusterise.com/articles/regex-negative-lookahead/
Если я хочу включить только две подпапки, например «abc» и «def», я использую что-то вроде следующего:
Regex ^([^ad].*|a[^b].*|ab[^c].*|d[^e].*|de[^f].*)
какой вид эмулирует негативный просмотр вперед^(?!abc|def)