Unison ignoriert keine Pfade

419
Marklar

Ich versuche zu ignorieren .git, .bundleund node_moduleVerzeichnisse von meinem sync. Ich habe eine Menge verschiedener Kombinationen ausprobiert, um zu versuchen, es zum Laufen zu bringen, aber bei jeder Synchronisierung kann ich alle diese Verzeichnisse auf dem Remote-Rechner synchronisieren.

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 eine Synchronisierung von OSX nach Windows 10, falls dies hilfreich ist.

2

1 Antwort auf die Frage

2
Mike Pierce

Hier ist ein Link zum Abschnitt " Pfadangaben" und "Pfad ignorieren " des Unison-Handbuchs, da dies mein Lieblingsabschnitt ist, wenn Sie Fragen zu Unison beantworten. Beachten Sie, dass ignore Name = namejeder Pfad ignoriert wird, in dem die letzte Komponente übereinstimmt name. Ebenfalls

[Das Zeichen] *entspricht einer beliebigen Folge von Zeichen, die nicht enthalten /(und nicht mit ., wenn sie am Anfang eines Namens verwendet werden).

So können wir Pfade genauso ignorieren wie bestimmte Dateitypen. Unter Berücksichtigung der Tatsache, dass IhrFormal .git, .bundleund node_modulehaben alle einen führenden /Charakter, kann aber unter einem versteckten Verzeichnis gefunden werden, die mit einem beginnt ., sind die folgenden Zeilen, was Sie wollen:

ignore = Name {*/,.*/}.git ignore = Name {*/,.*/}.bundle ignore = Name {*/,.*/}node_module 

Für alle, die nur das gesamte rootVerzeichnis synchronisieren, gibt es einen unglücklichen Eckpunkt, den dies nicht abdeckt: Wenn sich diese Dateien auf der obersten Ebene befinden, direkt im rootVerzeichnis, das Sie synchronisieren, gibt es kein führendes /Zeichen. Dieses Problem wird im obigen Profil vermieden, da nur das Verzeichnis testdirmit der Leitung synchronisiert wird path = hack/testdir. Für jemanden, der das gesamte Root-Verzeichnis synchronisiert, könnten Sie sowieso etwas .*,*zu den Globbing-Mustern hinzufügen, aber diese Muster passen zu jeder Datei mit einem ähnlichen Namen foo.git. Sie können sich also entweder auflösen, um keine Verzeichnisse / Dateien mit dem Namen .gitusw. in der obersten Ebene Ihres rootVerzeichnisses zu haben, oder wenn Sie in Ordnung sind, wenn Sie mit ähnlichen Dingen übereinstimmenfoo.git Auch können Sie die Zeilen verwenden:

ignore = Name {.*,*,*/,.*/}.git ignore = Name {.*,*,*/,.*/}.bundle ignore = Name {.*,*,*/,.*/}node_module 
Vielen Dank, dass alle meine Probleme gelöst wurden. Alle meine unisonen Fragen zumindest;) Marklar vor 6 Jahren 0
@ Marklar Sie sind sehr willkommen. Hoffentlich finden Sie eine StackExchange-Site, die auch bei Ihren anderen Problemen hilfreich ist. : D Mike Pierce vor 6 Jahren 1