Parece que não é possível fazer exatamente o que você deseja. Quando o Unison sincroniza um arquivo versus um diretório, o Unison pode diferenciar os dois, mas o Unison não se refere a eles de forma diferente (por exemplo, prefixando / em diretórios ou algo assim) de uma maneira que permita ao usuário padronizar jogo contra um ou outro. Por exemplo, se você sincronizar um diretório chamado deer e um arquivo chamado phil sob a raiz ROOT , o Unison os verá nomeados como
new dir ----> ROOT/deer
new file ----> ROOT/phil
Você não pode distinguir entre ROOT/deer e ROOT/phil . Aqui estão algumas sugestões embora
-
Especifique manualmente os diretórios que você deseja sincronizar, adicionando uma linha
path = deerao seu perfil para cada diretório. Eu acho que esta é a maneira padrão de configurar o Unison de qualquer maneira. Então, para qualquer arquivo no diretório raiz que você deseja sincronizar também, digamos, um arquivo chamadophil, você pode moverphilpara um diretório que é sincronizado comodeer/synced-root-files/e depois adicionar um symbolic link desse arquivo de volta para o diretório raizcd ROOT; ln -s ROOT/deer/synced-root-files/phil -
Invente uma convenção de nomenclatura no diretório raiz com a qual você pode corresponder o padrão. Por exemplo, nomeie todos e somente os arquivos que você não deseja sincronizar algo como
ignore.phile adicione uma linha ao seu perfil do Unisonignore = Path ignore.*.
Aqui está um link para a especificação do caminho e Ignorando caminhos do manual do Unison para que os futuros leitores possam encontrá-lo facilmente.