unison with inoify watch: como ele lida com mudanças freqüentes no (s) mesmo (s) arquivo (s)?

1

Suponha que eu tenha um arquivo relativamente grande sincronizado por uníssono. E o arquivo muda por algum tempo com mais frequência do que o unison é capaz de sincronizá-lo. Isso esmaga as alterações subsequentes ou tenta enfileirar e enviar todas as versões? É possível configurar um intervalo de tempo mínimo entre as sincronizações subsequentes para um único arquivo ou globalmente, por exemplo: enfileirar todas as alterações por algum tempo e acionar uma ação eliminando todas as alterações subsequentes feitas durante o intervalo?

    
por ardabro 27.07.2017 / 15:24

1 resposta

1

Pelo que sei, o Unison não enfileira mais de uma versão de um determinado arquivo para ser sincronizado. Em vez disso, é executado algo assim:

  1. O Unison é executado e percorre todos os seus arquivos locais e remotos e cria uma lista dos que foram alterados.

  2. Em seguida, o Unison é executado sobre essa lista e sincroniza cada arquivo um de cada vez.

Portanto, não há filas de várias versões de um único arquivo em andamento. Depois que o Unison reconhece que o arquivo foi alterado desde a última sincronização, ele apenas sincroniza qualquer versão que aconteça no disco quando estiver lendo o arquivo na etapa 2. Se o arquivo for alterado dez vezes entre quando é adicionado à lista na etapa 1 e sincronizado no passo 2, o Unison não sabe e só verá a última versão. Realmente não precisa considerar as versões intermediárias.

Agora, se o arquivo atualizar com freqüência, há uma chance de que ele atualize enquanto o Unison está sincronizando, o que retornará um erro. Algo como

Failed to fingerprint file "foo.bar": the file keeps on changing

ou às vezes algo como File changed during sync ... , e ele simplesmente ignora esse arquivo.

    
por 29.07.2017 / 01:24

Tags