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:
-
O Unison é executado e percorre todos os seus arquivos locais e remotos e cria uma lista dos que foram alterados.
-
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.