2016-07-08 8 views
2

Ich habe ein Verzeichnis ~/X7/Musik/SFX
Es gibt einige Dateien und Ordner im Stammverzeichnis ~/X7/Musik
Ich brauche nur SFX-Ordner zu synchronisieren, und ignoriert alles sonst in der Musik.Unisono. Ignorieren alles in einem Verzeichnis außer einem Unterordner

Ich habe viele Varianten ausprobiert, aber alle waren falsch.

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

Is funktioniert nicht

Ich hatte erwartet, etwas zu verwenden, wie

ignore = Name music/*^/ 

ich glücklich sein würde, wenn Sie mich mit diesem :)

Antwort

1

helfen werde ich nicht bin vertraut mit unison, aber um alles außer sfx zu ignorieren, könnten Sie

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

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

Leider funktioniert Ihre Lösung nicht richtig. Es synchronisiert immer noch alle Musikordner. Ich kann nur diesen Ordner nicht synchronisieren, weil Unison 2 Quellen unterstützt (im Beispiel remote und lokal), so dass ich nur Regex für diese spezielle Operation verwenden kann. – det

+0

Ich schaute auf ihre Dokumente, wo sie erklären, wie dies zu tun ist, und aktualisiert meine Antwort –

+0

_Danke, dass Sie versuchen zu helfen) _ Diese Zeichenfolge: 'ignore = Regex/home/det/x7/Musik/((? ! sfx).) * 'or (~./x7/music ...) Tells ** Fehler **: ' Fataler Fehler: Datei "x7", Zeile 33: Fehlgeformtes Muster "Regex/home/det/x7/music/((?! sfx).) * ".' – det

0

Nach unisono in der Dokumentation, wenn ein bestimmte Pfad dann ignoriert, so tut alles brüllt es. Wenn Sie also alles innerhalb eines Ordners mit Ausnahme eines Unterordners ignorieren möchten, sollten Sie den Ordner selbst nicht ignorieren, sondern alles darin (was anders ist) und dann ignorenot verwenden.

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

Das sollte es tun.

In Bezug auf die dort verwendeten Regexs befolge ich erneut den Dokumentationsrat von Unison: "Aus diesem Grund ist es keine gute Idee, Name * als Ignoriermuster einzuschließen. Wenn Sie alles außer einem bestimmten Satz ignorieren wollen von Dateien, verwenden Sie Name ?*. " Die zweite Zeile ignore ignoriert auch versteckte Dateien/Ordner innerhalb music, wenn dies für Sie notwendig ist.