2016-07-08 3 views
2

У меня есть каталог ~/x7/музыка/SFX
Есть некоторые файлы и папки в корневом каталоге ~/x7/музыка
мне нужно синхронизировать только папку SFX, и игнорировать все еще в музыке.Унисон. Игнорируйте все в каталоге, кроме одной вложенной

Я пробовал много вариантов, но все они были неправы.

ignore = Name music/* 
ignorenot = Regex music/sfx/.* (OR just *) 

Is не работает

я ожидал, чтобы использовать что-то вроде

ignore = Name music/*^/ 

Я был бы счастлив, если вы поможете мне с этим :)

ответ

1

Я не знакомы с унисон, но игнорировать все, кроме sfx, вы можете использовать

ignore = Regex /root/path/to/music/.* 
ignorenot Regex /root/path/to/music/sfx/.* 

Documentation Source

There is also an ignorenot preference, which specifies a set of patterns for paths that should not be ignored, even if they match an ignore pattern. However, the interaction of these two sets of patterns can be a little tricky. Here is exactly how it works:

  • Unison starts detecting updates from the root of the replicas—i.e., from the empty path. If the empty path matches an ignore pattern and does not match an ignorenot pattern, then the whole replica will be ignored. (For this reason, it is not a good idea to include Name * as an ignore pattern. If you want to ignore everything except a certain set of files, use Name ?*.)

  • If the root is a directory, Unison continues looking for updates in all the immediate children of the root. Again, if the name of some child matches an ignore pattern and does not match an ignorenot pattern, then this whole path including everything below it will be ignored.

  • If any of the non-ignored children are directories, then the process continues recursively.

+0

К сожалению, у вас не работает правильное решение. Он по-прежнему синхронизирует всю папку с музыкой. Я не могу синхронизировать только эту папку, потому что unison поддерживает 2 источника (например, удаленный и локальный), поэтому я могу использовать только регулярное выражение для этой конкретной операции. – det

+0

Я посмотрел их документы, где они объясняют, как это сделать, и обновил мой ответ –

+0

_Thank за помощь) _ Эта строка: 'ignore = Regex/home/det/x7/music/((? ! sfx).) * 'или (~./x7/music ...) говорит ** ошибка **: ' Неустранимая ошибка: Файл "x7", строка 33: Недостаточный шаблон "Regex/home/det/x7/music/((! sfx).) * ".' – det

0

После документации унисон, в случае определенный путь игнорируется то и делает все сильфона него. Итак, если вы хотите игнорировать все в папке, кроме вложенной папки, вы не должны игнорировать сама папку, но все внутри нее (это другое), а затем используйте ignorenot.

ignore = Path x7/music/?* 
ignore = Path x7/music/.?* 
ignorenot = Path x7/music/sfx 

Это должно быть сделано.

Что касается конкретных регулярных выражений, используемых там, я снова следую советам унисон по документации: «По этой причине не стоит включать Name * в качестве шаблона игнорирования. Если вы хотите игнорировать все, кроме определенного набора файлов, используйте Name ?*. " Вторая строка ignore игнорирует также скрытые файлы/папки в пределах music, если это необходимо для вас.