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 = deer
ao 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 moverphil
para 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.phil
e 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.