![Unison ignoriert Pfade nicht](https://rvso.com/image/1568466/Unison%20ignoriert%20Pfade%20nicht.png)
Ich versuche, .git
die Verzeichnisse .bundle
und node_module
von meiner Synchronisierung zu ignorieren. Ich habe jede Menge verschiedene Kombinationen ausprobiert, um es zum Laufen zu bringen, aber bei jeder Synchronisierung kann ich sehen, wie alle diese Verzeichnisse mit dem Remotecomputer synchronisiert werden.
Kann jemand erkennen, was ich falsch mache?
~/.unison/default.prf
# Roots of the synchronization
root = /Users/bob/synced
root = ssh://bob@remotebox/synced
# Paths to synchronize
path = hack/testdir
# Some regexps specifying names and paths to ignore
ignore = Name *.log
ignore = Name .DStore
ignore = Name .DS_Store
ignore = Name *.output
ignore = Name *:*
ignore = Path {*/.git/*}
ignore = Path {*/.bundle/*}
ignore = Path {*/.vagrant/*}
ignore = Path {*/.git}
ignore = Path {*/.bundle}
ignore = Path {*/node_modules}
# Window height
height = 37
# propogate file modification times
times = true
# Log actions to the terminal
log = true
auto = true
batch = true
Dies ist die Synchronisierung von OSX zu Windows 10, falls das hilft.
Antwort1
Hier ist ein Link zumPfadangaben und Ignorieren von PfadenAbschnitt des Unison-Handbuchs, weil es mein Lieblingsabschnitt ist, wenn ich Fragen zu Unison beantworte. Beachten Sie, dass ignore Name = name
jeder Pfad ignoriert wird, in dem die letzte Komponente übereinstimmt name
. Außerdem
[Das Zeichen]
*
entspricht jeder Zeichenfolge außer/
(und beginnt nicht mit.
, wenn es am Anfang eines Namens verwendet wird).
Wir können also Pfade genauso ignorieren, wie wir bestimmte Dateitypen ignorieren. Unter Berücksichtigung der Tatsache, dass Ihre .git
, .bundle
und node_module
alle ein führendes /
Zeichen haben, aber in einem versteckten Verzeichnis zu finden sein können, das mit einem beginnt .
, sind die folgenden Zeilen das, was Sie brauchen:
ignore = Name {*/,.*/}.git
ignore = Name {*/,.*/}.bundle
ignore = Name {*/,.*/}node_module
Für alle, die nur das gesamte root
Verzeichnis synchronisieren, gibt es einen unglücklichen Sonderfall, der hier nicht behandelt wird: Wenn sich diese Dateien auf der obersten Ebene befinden, direkt in dem root
Verzeichnis, das Sie synchronisieren, gibt es in diesem Fall kein führendes /
Zeichen. Dieses Problem wird im obigen Profil vermieden, da nur das Verzeichnis testdir
mit der Zeile synchronisiert wird path = hack/testdir
. Wie auch immer, für jemanden, der das gesamte Stammverzeichnis synchronisiert, könnten Sie .*,*
den Globbing-Mustern etwas wie hinzufügen, aber diese Muster werden übereinstimmenbeliebigDatei mit einem Namen wie too. Sie können also entweder festlegen, dass in der obersten Ebene Ihres Verzeichnisses foo.git
keine Verzeichnisse/Dateien mit dem Namen usw. vorhanden sind , oder, wenn Sie mit der Zuordnung von Dingen wie too einverstanden sind , können Sie die folgenden Zeilen verwenden:.git
root
foo.git
ignore = Name {.*,*,*/,.*/}.git
ignore = Name {.*,*,*/,.*/}.bundle
ignore = Name {.*,*,*/,.*/}node_module