Aqui está um link para as Especificações do caminho e o caminho de ignorar seção do manual do Unison, porque é a minha seção favorita ao responder perguntas sobre o Unison. Observe que ignore Name = name
ignora qualquer caminho no qual o último componente corresponda a name
. Também
[The character]
*
matches any sequence of characters not including/
(and not beginning with.
, when used at the beginning of a name).
Assim, podemos ignorar os caminhos da mesma maneira que ignoramos certos tipos de arquivos. Considerando o fato de que .git
, .bundle
e node_module
terão um caractere /
inicial, mas podem ser encontrados em um diretório oculto que começa com .
, as linhas a seguir são o que você deseja :
ignore = Name {*/,.*/}.git
ignore = Name {*/,.*/}.bundle
ignore = Name {*/,.*/}node_module
Para quem apenas sincroniza todo o diretório root
, há um caso lastimável que isso não cobre: quando esses arquivos estão no nível superior, bem no diretório root
que você está sincronizando, em Nesse caso, não há nenhum caractere /
inicial. Esse problema é evitado no perfil acima porque apenas o diretório testdir
está sendo sincronizado com a linha path = hack/testdir
. De qualquer forma, para alguém que sincroniza todo o diretório raiz, você pode adicionar algo como .*,*
aos padrões globbing, mas esses padrões corresponderão a qualquer arquivo com um nome como foo.git
. Assim, você pode decidir não ter diretórios / arquivos com o nome .git
, etc, no nível superior do diretório root
, ou se você concordar com coisas como foo.git
, então pode usar as linhas :
ignore = Name {.*,*,*/,.*/}.git
ignore = Name {.*,*,*/,.*/}.bundle
ignore = Name {.*,*,*/,.*/}node_module