2016-07-08 5 views
2

J'ai un répertoire ~/x7/musique/sfx
Il y a quelques fichiers et dossiers dans la racine de ~/x7/Musique
J'ai besoin de synchroniser uniquement dossier sfx, et ignorer quoi que ce soit d'autre en musique.Unison. Ignorer tout dans un répertoire, sauf un sous-dossier

J'ai essayé plusieurs variantes, mais toutes étaient erronées.

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

Is ne fonctionne pas

je comptais utiliser quelque chose comme

ignore = Name music/*^/ 

Je serais heureux si vous me aider :)

Répondre

1

Je ne suis pas familier avec l'unisson, mais pour ignorer tout sauf sfx vous pouvez utiliser

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

Malheureusement, votre solution ne fonctionne pas correctement. Il synchronise toujours tous les dossiers de musique. Je ne peux pas synchroniser uniquement ce dossier, car unison prend en charge 2 sources (par exemple à distance et local) donc je ne peux utiliser que regex pour cette opération spécifique. – det

+0

j'ai regardé leurs documents, où ils expliquent comment faire ceci, et mis à jour ma réponse –

+0

_Merci pour essayer d'aider) _ 'ignore = Regex/home/det/x7/musique/((? ! sfx).) * 'ou (~./x7/musique ...) dit ** erreur **: ' Erreur fatale: Fichier "x7", ligne 33: Motif mal formé "Regex/home/det/x7/music/((?! sfx).) * ".' – det

0

Suite à la documentation de l'unisson, si un certain chemin est ignoré alors il en est tout ci-dessous il. Donc, si vous voulez ignorer tout dans un dossier à l'exception d'un sous-dossier, vous ne devez pas ignorer le dossier lui-même, mais tout ce qu'il contient (ce qui est différent), puis utiliser ignorenot.

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

Cela devrait le faire. En ce qui concerne les expressions rationnelles particulières utilisées, je suis encore une fois le conseil de documentation d'Unison: "Pour cette raison, il est déconseillé d'inclure Name * comme un motif ignoré Si vous voulez ignorer tout sauf un certain ensemble de fichiers, utilisez Name ?*. " La deuxième ligne ignore ignore également les fichiers/dossiers cachés dans music, si cela est nécessaire pour vous.