
Estoy intentando ignorar los directorios y .git
de 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..bundle
node_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 = name
ignora 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
, .bundle
y node_module
tendrá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 root
directorio, existe un caso desafortunado que esto no cubre: cuando estos archivos están en el nivel superior, justo en el root
directorio que está sincronizando, en cuyo caso no hay ningún /
carácter principal. Este problema se evita en el perfil anterior porque solo testdir
se 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.git
también. Por lo tanto, puede decidir no tener ningún directorio/archivo llamado .git
, etc., en el nivel superior de su root
directorio, o si está de acuerdo con hacer coincidir cosas como foo.git
también, entonces puede usar las líneas:
ignore = Name {.*,*,*/,.*/}.git
ignore = Name {.*,*,*/,.*/}.bundle
ignore = Name {.*,*,*/,.*/}node_module