Infelizmente, parece que Unison (sozinho) não pode fazer isso facilmente. A partir do uso de ignorenot xxx
no manual do Unison :
In particular, putting
ignore = Path *
in your profile and then usingignorenot
to select particular paths to be synchronized will not work. Instead, you should use the path preference to choose particular paths to synchronize.
Como isso foi exatamente o que eu tinha em mente como solução, significa que não há uma boa solução. Aqui estão algumas ideias úteis:
-
Adicione manualmente um novo caminho para cada projeto : é exatamente isso que a citação acima sugere. Para cada novo projeto iniciado e cada novo diretório
src
que você deseja sincronizar, adicione uma linhaPath = path/to/src
ao seu perfil do Unison.
-
Ignore manualmente os arquivos de configuração e construção : Talvez todos os seus arquivos de configuração e configuração tenham apenas alguns padrões diferentes aos quais você pode corresponder? Você poderia dizer ao Unison para ignorar esses padrões em particular adicionando algo ao seu perfil do Unison, como
ignore = Name *.o #ignore object files ignore = Name build #ignore paths that end with "build" ignore = Name {.*,*}.sw[ponx] #ignore pesky vim swap files ignore = ...
-
Escreva um script para ajudar : Você certamente pode escrever um script que pesquise todos os diretórios denominados
src
e chame o Unison sobre eles individualmente. Mas isso parece meio bobo. Você poderia escrever um script que ajude com o ponto (1) acima. Escreva um script que encontre todos os caminhos denominadossrc
e, para cada um desses caminhos, adicione a linhaPath = /path/to/src
para algum arquivo
AllThePaths
e, em seguida, apenas a linhainclude AllThePaths
no seu perfil do Unison.