![¿Cómo se ignoran todos los archivos pero no los subdirectorios con Unison?](https://rvso.com/image/1568326/%C2%BFC%C3%B3mo%20se%20ignoran%20todos%20los%20archivos%20pero%20no%20los%20subdirectorios%20con%20Unison%3F.png)
Quiero sincronizar el contenido de todos los subdirectorios de una raíz determinada, pero solo unos pocos archivos en la raíz misma. Para hacerlo, me gustaría ignorar todos los archivos que usan la ignore
directiva (manteniendo todos los subdirectorios) y volver a agregar los pocos archivos que quiero conservar con la ignorenot
directiva. Para hacerlo probé las dos cosas siguientes:
Agregar una expresión regular para excluir cualquier entrada en la raíz que contenga una barra al agregarla
ignore = Regex ^(?!.*\/).*$
a mi perfil. Pero esto da como resultado un mensaje de error como el siguiente sin más explicación:Malformed pattern "Regex ^(?!.*\/).*$"."
Primero ignorando todo
ignore = Name ?*
y luego volviendo a agregar cada ruta que contenga una barra diagonal conignorenot = Path */*
, lo cual no funcionó como se esperaba ya que no ignorar directorios no funciona de esta manera.
Parece ser un problema muy simple, pero no puedo entenderlo.
Respuesta1
Parece que no es posible hacer exactamente lo que quieres. Cuando Unison sincroniza un archivo con un directorio, Unison puede notar la diferencia entre los dos, pero Unison no se refiere a ellos de manera diferente (por ejemplo, anteponiendo a a /
los directorios o algo así) de una manera que permita al usuario comparar patrones con uno. o el otro. Por ejemplo, si sincroniza un directorio con el nombre deer
y un archivo con el nombre phil
en la raíz ROOT
, Unison los verá con el nombre
new dir ----> ROOT/deer
new file ----> ROOT/phil
No se puede distinguir entre ROOT/deer
y ROOT/phil
. Aquí hay algunas sugerencias
Especifique manualmente los directorios que desea sincronizar agregando una línea
path = deer
a su perfil para cada directorio. De todos modos, creo que esta es la forma estándar de configurar Unison. Luego, para cualquier archivo en su directorio raíz que desee sincronizar también, digamos un archivo llamadophil
, puede pasarphil
a un directorio que se sincronicedeer/synced-root-files/
y luego agregar unenlace simbólicodesde ese archivo de regreso a su directorio raízcd ROOT; ln -s ROOT/deer/synced-root-files/phil
Invente una convención de nomenclatura en su directorio raíz con la que pueda comparar patrones. Por ejemplo, nombre todos y sólo los archivos quenodesea sincronizar algo como
ignore.phil
y agregar una línea a su perfil de Unisonignore = Path ignore.*
.
Aquí hay un enlace alEspecificación de rutayIgnorando caminossecciones del manual de Unison para que los futuros lectores puedan encontrarlo fácilmente.