Usando o Unison para sincronizar somente pastas chamadas 'src'

2

Eu tenho um laptop conectado a uma estação de trabalho em nuvem. Toda a minha compilação acontece na estação de trabalho em nuvem, mas modifico os arquivos no meu laptop. Eu quero sincronizar arquivos entre os dois, mas eu quero apenas arquivos de origem para ser sincronizado, não construir, configuração, etc. Eu quero fazer isso para que se uma pasta é nomeada src , ele e seu conteúdo obter recursivamente sincronizados.

Por exemplo, ~/workspace/src/file1.cpp e ~/workspace/src/myfolder/file2.cpp são sincronizados, mas ~/workspace/build/file3.cpp não. Eu continuo fazendo e excluindo projetos e não quero ter que reconfigurar caminhos de arquivos para sincronização toda vez que eu criar um novo projeto com um novo diretório src .

Agora mesmo estou usando a ferramenta de sincronização de arquivos Unison para Mac e não sei como fazer isso. Alguém pode me mostrar?

    
por Sacha T Red 24.07.2017 / 20:48

1 resposta

0

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 using ignorenot 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:

  1. 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 linha

    Path = path/to/src
    

    ao seu perfil do Unison.

  2. 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 = ...
    
  3. 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 denominados src e, para cada um desses caminhos, adicione a linha

    Path = /path/to/src
    

    para algum arquivo AllThePaths e, em seguida, apenas a linha

    include AllThePaths
    

    no seu perfil do Unison.

por 12.07.2018 / 18:27

Tags