Al unísono sin ignorar los caminos

Al unísono sin ignorar los caminos

Estoy intentando ignorar los directorios y .gitde mi sincronización. Probé un montón de combinaciones diferentes para intentar que funcione, pero cada vez que sincronizo puedo ver todos esos directorios sincronizándose con la máquina remota..bundlenode_module

¿Alguien puede detectar lo que estoy haciendo mal?

~/.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

Esto se sincroniza desde OSX a Windows 10 si eso ayuda.

Respuesta1

Aquí hay un enlace alEspecificaciones de ruta e ignoración de rutasección del manual de Unison porque es mi sección favorita cuando respondo preguntas sobre Unison. Tenga en cuenta que ignore Name = nameignora cualquier ruta en la que coincida el último componente name. También

[El carácter] *coincide con cualquier secuencia de caracteres que no incluyan /(y que no comiencen con ., cuando se usan al principio de un nombre).

Entonces podemos ignorar las rutas del mismo modo que ignoramos ciertos tipos de archivos. Teniendo en cuenta el hecho de que su .git, .bundley node_moduletendrán un /carácter principal, pero se pueden encontrar en un directorio oculto que comienza con ., las siguientes líneas son lo que desea:

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

Para cualquiera que simplemente sincronice todo el rootdirectorio, existe un caso desafortunado que esto no cubre: cuando estos archivos están en el nivel superior, justo en el rootdirectorio que está sincronizando, en cuyo caso no hay ningún /carácter principal. Este problema se evita en el perfil anterior porque solo testdirse sincroniza el directorio con la línea path = hack/testdir. De todos modos, para alguien que sincroniza todo el directorio raíz, podría agregar algo como .*,*los patrones globales, pero estos patrones coincidiráncualquierarchivo con un nombre como foo.gittambién. Por lo tanto, puede decidir no tener ningún directorio/archivo llamado .git, etc., en el nivel superior de su rootdirectorio, o si está de acuerdo con hacer coincidir cosas como foo.gittambién, entonces puede usar las líneas:

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

información relacionada